我需要创建一个解决方案,其中C#类型的静态属性是在运行时而不是编译时确定的。需要通过反射发现这些运行时属性,例如使用:
Type mytype =type(MyType);
mytype .GetProperty(this._errorMessageResourceName, BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic);
到目前为止,我已经调查了以下内容:
C#中的DynamicObject是否可以拦截静态属性的请求?
如果通过反射调用TryGetMember方法似乎没有拦截方法,而且我可以通过VS intellisense告诉我,DynamicObject可能不适用于静态。
这存在于System.ComponentModel.DataAnnotations命名空间中,仅适用于数据绑定情况,我需要一个适用于一般.NET运行时的解决方案。
通过.NET代码,似乎这可能是一个选项(因为System.Type是抽象的)但我无法弄清楚如何生成此类型或如何覆盖加载的类型。 (也许这是个坏主意)。