特定のインターフェイスを実装する型を定義したいのですが、実行時にプロキシでのみ実装します。このシナリオには 2 つの障害があります。
1-コンパイラが実装されていないインターフェイスを無視するようにします。2-CLR が TypeLoadException を無視する (または少なくとも遅らせる) ようにします。
このようなことは可能ですか?
特定のインターフェイスを実装する型を定義したいのですが、実行時にプロキシでのみ実装します。このシナリオには 2 つの障害があります。
1-コンパイラが実装されていないインターフェイスを無視するようにします。2-CLR が TypeLoadException を無視する (または少なくとも遅らせる) ようにします。
このようなことは可能ですか?
これを行う必要がある場合は、インターフェイスの何らかの基本的/空の実装を提供してコンパイラを満足させるクラスを作成し、そのクラスから降りて実際の実装を提供します。
ハックすぎると考える他の方法-私が悪用していた動作が将来変更/修正されないことに不安を感じます。
型がインターフェイスを継承する場合、その型からすべてのメンバーを実装する必要があります。私が考えることができる最も近いことは、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.
}
}