May*_*hak 1 c# asp.net reflection inheritance class
public DerivedClass : BaseClass
{
// code
}
DerivedClass B = (DerivedClass)MethodReturnsBaseClassObject();
B.DoWork();
Run Code Online (Sandbox Code Playgroud)
从中继承了许多Derived类BaseClass。因此,每次我需要编写一种使用某些属性的新方法。
是否有可能使用反射使DerivedClass类型动态化并执行类似的操作并使它通用。
System.Type type = GetRequestFromSession().GetType();
type B = (type )MethodReturnsBaseClassObject();
Console.WriteLine( B.Name);
Console.WriteLine( B.Age);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
如果您使用具有以下签名的通用方法,则可以在强制基类约束的同时安全地访问派生类型的成员(不强制转换):
public TDerived MethodReturnsDerivedObject<TDerived>()
where TDerived : BaseClass
Run Code Online (Sandbox Code Playgroud)
您的通话将如下所示:
DerivedClass b = MethodReturnsDerivedObject<DerviedClass>();
b.ExecuteSomeMethodDefinedInBaseClass();
Console.WriteLine(b.SomePropertyDefinedInDerivedClass);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |