public class SetterWrapper<TTarget, TValue> { private Action<TTarget, TValue> _setter; public SetterWrapper(PropertyInfo propInfo) { if (propInfo == null) throw new ArgumentNullException("propertyInfo"); if (!propInfo.CanWrite) throw…
基于封装的原则,API 的设计者会将部分成员(属性.字段.方法等)隐藏以保证健壮性.但总有需要直接访问这些私有成员的情况. 为了访问一个类型的私有成员,除了更改 API 设计还有就是使用反射技术: public class MyApi { public MyApi() { _createdAt = DateTime.Now; } private DateTime _createdAt; public int ShowTimes { get; private set; } public void…