Хорошо, у меня есть два пространства имен. Один содержит мой интерфейс, а один содержит класс реализации. Вот так:
namespace Project.DataAccess.Interfaces
{
public interface IAccount
{
string SomeMethod();
}
}
namespace Project.DataAccess.Concrete
{
class Account : Project.DataAccess.Interfaces.IAccount
{
string SomeMethod()
{
return "Test";
}
}
}
С помощью этого кода я получаю сообщение об ошибке:
'Project.DataAccess.Concrete.Account' не реализует член интерфейса 'Project.DataAccess.Interfaces.IAccount.SomeMethod'. "Project.DataAccess.Concrete.Account.SomeMethod" не может реализовать член интерфейса, поскольку он не является общедоступным.
Если я создаю класс и метод public, он работает нормально. Но если я вместо этого квалифицирую имя метода с именем интерфейса, это также исправляет его. Зачем? Пример:
namespace Project.DataAccess.Concrete
{
class Account : Project.DataAccess.Interfaces.IAccount
{
string IAccount.SomeMethod()
{
return "Test";
}
}
}
Почему это исправить? И почему это должно быть общедоступным, если я этого не делаю?
Чтобы быть четким
Мне хорошо известно, что это делает его общедоступным. Создание подписи метода выглядит так: БЕЗ создания каких-либо публичных исправлений:
string IAccount.SomeMethod()
Почему?