Interal методы интерфейсов в C# - как это работает?
У меня вопрос по поводу этого кода:
internal interface IRepository {
internal void LoadFromDB();
internal void SaveToDB();
}
Компилятор все принял, но когда я реализовываю интерфейс в классе, компилятор требует, чтобы эти методы были строго public. В чем прикол? Зачем тогда разрешать делать их internal?
И даже если сам класс объявить как internal - всеравно требует public!
Собственно задача: Реализовать интерфейс в кругу одной сборки, о котором (и его методах) никто ничего не знает (снаружи этой сборки)
Ответы (1 шт):
Автор решения: Kalmankantaja
→ Ссылка
Реализуй explicitly наименования в классе:
internal interface IRepository
{
internal void LoadFromDB();
internal void SaveToDB();
}
public class Repository : IRepository
{
void IRepository.LoadFromDB()
{
}
void IRepository.SaveToDB()
{
}
}
Теперь методы в классе не будут доступны в других сборках, как и сам интерфейс, но сам класс будет доступен. Так же ты можешь просто сам класс указать как internal и сделать методы public