【发布时间】:2013-05-29 07:30:42
【问题描述】:
是否可以让已经编译好的类在运行时实现某个接口,例如:
public interface ISomeInterface {
void SomeMethod();
}
public class MyClass {
// this is the class which i want to implement ISomeInterface at runtime
}
这可能吗,如果可以,那怎么办?
【问题讨论】:
-
没有。你为什么要这样做?
-
您不能让 MyClass 实现 ISomeInterface,但您可以生成一个派生自 MyClass 的类并使用 Reflection.Emit 或其他一些技术实现 ISomeInterface。
-
您可以使用@ThomasLevesque 建议的技术,但如果您给我们您的用例,可能有更好的方法来实现您想要的效果
-
@TyCobb:你为什么暗示没有充分的理由这样做?尽管 C# 不支持这种类型的多态性,但这是一个很好且有效的想法。例如,Haskell 或 Clojure 协议 (IIRC) 中的类型类就是这样工作的。
-
@stakx 我并不是要暗示这一点。我真的很想知道为什么要这样做而不是实现接口。