我可以让编译器和 CLR 忽略我的类型上未实现的接口吗?

问题描述 投票:0回答:2

我想定义一个实现某个接口的类型,但是我只会在运行时在代理中实现它。在这种情况下我可以看到两个障碍:

1-让编译器忽略未实现的接口。 2-使 CLR 忽略(或至少延迟)带有以下描述的 TypeLoadException:“来自程序集 SOMEASSEMBLY 的 SOMETYPE 类型中的方法 SOMEMETHOD 没有实现。”

这样的事情可能吗?

c# .net clr dynamic-proxy
2个回答
1
投票

如果我需要这样做,我会创建一个提供某种接口的基本/空实现的类,以使编译器满意,然后从该类下降以提供实际的实现。

我认为的任何其他方式都太黑客化了 - 如果我正在利用的任何行为将来都不会被更改/修复,我会感到不舒服。


0
投票

如果您的类型继承了一个接口,那么它必须实现其中的每个成员。我能想到的最接近的事情就是抛出一个 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.
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.