C#:延迟加载,委托类,反射

时间:2011-05-25 07:20:09

标签: c# reflection lazy-loading

我有以下情况:

interface IMyInterface { ... } 

定义具有属性,方法等的通用接口。

class MyClass : ABaseClass, IMyInterface { ... } 

实现IMyInterface并派生自基类。

class MyLazyLoadingClass : IMyInterface { ... } 

返回某些方法/属性的某些预定义值,并在访问其他方法/属性时通过委托创建MyClass实例。它还定义了以下转换:

implicit operator MyClass(MyLazyLoadingClass myLazyLoadingClass) { ... }

创建实例并返回它。 (注:我知道隐式转换不应涉及此类操作,但由于现有系统设计,我没有找到其他解决方案。)

基本上实施起作用。我的问题:

通过反射检查MyClass(或MyLazyLoadingClass代理对象)以确定/获取/设置属性/自定义属性。因为MyLazyLoadingClass不是从ABaseClass派生的,所以它不包含相同的属性/方法/自定义/属性。

有没有办法告诉Reflection它应该在检查MyLazyLoadingClass时使用MyClass实例?或者是否可以用加载的MyClass实例“替换”MyLazyLoadingClass实例? (我真的不这么认为。)

1 个答案:

答案 0 :(得分:1)

不,我认为你不能那样做。

但您可能希望在运行时创建MyLazyLoadingClass,让它从ABaseClass“派生”,方法是添加方法等。