我想定义一个实现某个接口的类型,但是我只会在运行时在代理中实现它。在这种情况下,我可以看到两个障碍:
1-使编译器忽略未实现的接口。2-使用以下描述使 CLR 忽略(或至少延迟)TypeLoadException:“来自程序集 SOMEASSEMBLY 的 SOMETYPE 类型中的方法 SOMEMETHOD 没有实现。”
这样的事情可能吗?
我想定义一个实现某个接口的类型,但是我只会在运行时在代理中实现它。在这种情况下,我可以看到两个障碍:
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.
}
}