Можно ли заставить компилятор и CLR игнорировать не реализованные интерфейсы на моих типах? - PullRequest
0 голосов
/ 12 мая 2010

Я хотел бы определить тип, реализующий определенный интерфейс, однако я бы реализовал его только в прокси во время выполнения. В этом сценарии я вижу два препятствия:

1-Заставить компилятор игнорировать не реализованные интерфейсы. 2. Сделайте так, чтобы CLR игнорировал (или, по крайней мере, задерживал) исключение TypeLoadException со следующим описанием: «Метод SOMEMETHOD в типе SOMETYPE из сборки SOMEASSEMBLY не имеет реализации.»

Возможно ли что-то подобное?

Ответы [ 2 ]

1 голос
/ 13 мая 2010

Если бы мне нужно было сделать это, я бы создал класс, обеспечивающий некоторую базовую / пустую реализацию интерфейса, чтобы компилятор был доволен, а затем спустился из этого класса, чтобы обеспечить фактическую реализацию.

Любой другой способ, который я бы посчитал слишком хакерским - я бы не чувствовал себя комфортно, если бы любое поведение, которое я использовал, не было изменено / исправлено в будущем.

0 голосов
/ 13 мая 2010

Если ваш тип наследует интерфейс, он должен реализовывать каждый член из него. Самое близкое, что я могу придумать, это то, что вы можете сделать, это выбросить 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.
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...