Я только что столкнулся с этим странным поведением сегодня:
interface IFooBar
{
void Foo();
void Bar();
}
class FooBar : IFooBar
{
void IFooBar.Foo()
{
}
void IFooBar.Bar()
{
this.Foo();
}
}
Строка this.Foo (); выдает ошибку компилятора
«MyProject.FooBar» не содержит
определение для "Foo" и без расширения
Метод «Foo» принимает первый
аргумент типа «MyProject.FooBar»
может быть найден (вы пропускаете
используя директиву или сборку
ссылка?)
Если я выбираю открытые методы вместо стиля объявления interface.method, код компилируется:
class FooBarOk : IFooBar
{
public void Foo()
{
}
public void Bar()
{
this.Foo();
}
}
Я бы хотел понять, почему возникает эта ошибка и как ее можно обойти, используя нотацию interface.method