0
我有以下情形:C#:延遲加載,委託類,反射
interface IMyInterface { ... }
定義與屬性,方法等的通用接口。
class MyClass : ABaseClass, IMyInterface { ... }
實現IMyInterface並從基類派生。
class MyLazyLoadingClass : IMyInterface { ... }
返回某些方法/屬性的某些預定義值,並在訪問其他方法/屬性時通過委託創建MyClass的實例。它還定義了以下轉換:
implicit operator MyClass(MyLazyLoadingClass myLazyLoadingClass) { ... }
它創建實例並將其返回。 (注:我知道一個隱式轉換不應該涉及這樣的操作,但由於現有系統設計,我沒有發現其他解決方案。)
基本上實現工作。我的問題:
通過反射檢查MyClass(或MyLazyLoadingClass代理對象)以確定/獲取/設置屬性/自定義屬性。由於MyLazyLoadingClass不是從ABaseClass派生的,因此它不包含相同的屬性/方法/自定義/屬性。
有沒有辦法告訴反射當MyLazyLoadingClass被檢查時它應該使用MyClass實例?或者是否有可能用已加載的MyClass實例「替換」MyLazyLoadingClass實例? (我真的不這麼認爲)。
感謝您的答覆從
ABaseClass
爲「派生」。我這樣想,只是想確保...我通過向MyLazyLoadingClass添加接口並在使用反射時檢查該接口來解決問題。也許不是最好的解決方案,但它能完成這項工作。這將是很好的延遲基類初始化,直到未覆蓋的屬性被訪問... – Korexio 2011-05-25 10:16:23