动态继承

Meh*_*hdi 1 .net c# reflection

我正在编写一个程序,我有一些不扩展任何类的类.

我想知道运行时是否可以进行动态继承.我的意思是,如果一个或多个类可以在运行时从类派生.

Eri*_*ert 6

支持原型继承的语言(例如JScript)允许您执行与您描述的非常相似的操作.也就是说,通过原型继承,您可以在运行时决定继承方法的形状是与"特定"原型相关联的"实例"的形状.

抱歉,C#不支持此功能.如果你描述了你想要它的原因,也许我们可以在C#中找到另一种方法.


Dar*_*rov 5

你可以看看Reflection Emit。还有像Castle Dynamic ProxyCecil这样的框架可以简化这个任务。


更新:

现在,如果我理解正确,你有一些类,并且你想让这个类在运行时从另一个基类派生。让我们通过一个反例来证明这是不可能的:

假设有一种方法允许您执行此操作。考虑以下类:

public class Foo {}
Run Code Online (Sandbox Code Playgroud)

您可以使用此方法说 Foo 派生自System.IO.Stream显然不是这种情况,从而导致初始假设错误。

反射发出可能是在运行时生成一个动态类,该类继承自基类或实现接口。