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

C#:延迟加载、委托类、反射,c#,reflection,lazy-loading,C#,Reflection,Lazy Loading,我有以下情况: interface IMyInterface { ... } 使用属性、方法等定义公共接口 class MyClass : ABaseClass, IMyInterface { ... } 实现IMyInterface并从基类派生 class MyLazyLoadingClass : IMyInterface { ... } 返回某些方法/属性的一些预定义值,并在访问其他方法/属性时通过委托创建MyClass的实例。它还定义了以下转换: implicit operat

我有以下情况:

interface IMyInterface { ... } 
使用属性、方法等定义公共接口

class MyClass : ABaseClass, IMyInterface { ... } 
实现IMyInterface并从基类派生

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

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

基本上,实施是可行的。我的问题是:

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


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

不,我认为你做不到


但是您可能希望在运行时创建
MyLazyLoadingClass
,通过向其添加方法等,使其“派生”自
ABaseClass

感谢您的回复。我想是的,只是想确定。。。我通过向MyLazyLoadingClass添加一个接口来解决这个问题,并在使用反射时检查该接口。也许不是最好的解决方案,但它确实起到了作用。最好将基类初始化延迟到访问非重写属性为止。。。