Задать вопрос
@Lof

Почему в C# есть такое странное ограничение на реализацию internal интерфейса?

internal interface IFoo
{
void foo();
}

public class Foo : IFoo
{
internal void foo()
{
throw new NotImplementedException();
}
}


Program.cs(8,14): error CS0737: 'Foo' does not implement interface member 'IFoo.foo()'. 'Foo.foo()' cannot implement an interface member because it is not public.
  • Вопрос задан
  • 4662 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Dzuba
@Dzuba
Потому что interface по определению содержит описание только public членов.
Используйте явную реализацию метода интерфейса:
void IFoo.foo()
{
	throw new NotImplementedException();
}

Вызов:
Foo obj = new Foo();
((IFoo)obj).foo();
Ответ написан
Комментировать
taliban
@taliban
php программист
«Члены интерфейсов автоматически являются открытыми, и они не могут включать никакие модификаторы доступа.»
msdn.microsoft.com/ru-ru/library/ms173156.aspx
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы