поведение new в interface
От: Feral  
Дата: 26.02.07 17:46
Оценка:
Цель: хочется иметь общий 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?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.