Цель: хочется иметь общий public интерфейс только с Get методом у свойств, и internal interface у которого был бы и Get и Set.
Есть несколько вариантов.
Вот пример одного из, и вопрос:
public interface B
{
string Name
{
get;
}
}
internal interface AB : B
{
// new - hides a member inherited from a base class (!)
new string Name
{
get;
set;
}
}
internal class MyClass : AB
{
public string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
дальше:
AB ab = new MyClass ();
ab.Name = "!";
...
B b = (B) ab;
Debug.Assert (b.Name == "!"); //true!
Почему при вызове метода get_Name () интерфейса B вызывается метод get_Name () интерфеса AB?