我想定义一个实现某个接口的类型,但是我只会在运行时在代理中实现它。在这种情况下我可以看到两个障碍:
1-让编译器忽略未实现的接口。 2-使 CLR 忽略(或至少延迟)带有以下描述的 TypeLoadException:“来自程序集 SOMEASSEMBLY 的 SOMETYPE 类型中的方法 SOMEMETHOD 没有实现。”
这样的事情可能吗?
如果我需要这样做,我会创建一个提供某种接口的基本/空实现的类,以使编译器满意,然后从该类下降以提供实际的实现。
我认为的任何其他方式都太黑客化了 - 如果我正在利用的任何行为将来都不会被更改/修复,我会感到不舒服。
如果您的类型继承了一个接口,那么它必须实现其中的每个成员。我能想到的最接近的事情就是抛出一个 NotImplementedException。
public interface IFoo
{
void DoSomething();
}
public class Foo : IFoo
{
void IFoo.DoSomething()
{
throw new NotImplementedException();
}
}
public class FooProxy : Foo
{
public void DoSomething()
{
// Do something meaningful here.
}
}