动态将派生类类型转换为基类C#

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)

任何帮助表示赞赏。

Kir*_*kiy 5

如果您使用具有以下签名的通用方法,则可以在强制基类约束的同时安全地访问派生类型的成员(不强制转换):

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)