Вопрос по свойствам у класса

Gena928
Дата: 05.05.2014 14:27:20
День добрый,
есть примитивный класс:
    public class MyCustomer
    {

        public string SecondName
        { get; set; }


            // Метод для работы
            private void MyNewMethod()
            {
                // do something
            }
    }


Задача:
при присвоении значения свойству SecondName надо выполнить метод MyNewMethod().
Проблема в том, что у меня это получается только если создать локальную переменную _SecondName и указывавать ее в геттере и сеттере.
Т.е. вот таким способом:
         public class MyCustomer
        {

            private string _SecondName;

            /// <summary>
            /// Конструктор
            /// </summary>
            public MyCustomer()
            {
                _SecondName = "";
            }


            public string SecondName
            {
                get { return _SecondName; }
                set
                {
                    _SecondName = value;
                    MyNewMethod();
                }
            }



            // Метод для работы
            private void MyNewMethod()
            {
                // do something
            }
        }


А вот это вылетает с ошибкой:
        public class MyCustomer
        {

            public string SecondName
            {
                get; // вот это не нравится!
                set
                {
                    MyNewMethod();
                }
            }
            
            // Метод для работы
            private void MyNewMethod()
            {
            }
        }


Error 1 'ConsoleApplication1.Program.MyCustomer.SecondName.get' must declare a body because it is not marked abstract, extern, or partial c:\users........\visual studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 35 17 ConsoleApplication1

Вопрос: можно ли присвоить значение свойству SecondName без локальной переменной и при этом выполнить MyNewMethod?
ЕвгенийВ
Дата: 05.05.2014 15:11:09
Gena928,
Нельзя.
Автосвойства - синтаксический сахар, компилятор все равно с генерирует поле.
Lelouch
Дата: 05.05.2014 15:28:43
Gena928,

То что вы хотите - нельзя.
Хотя добиться похожего поведения можно, через Unity Interception например.
Gena928
Дата: 05.05.2014 15:57:18
Поянлъ, спасибо.
user7320
Дата: 05.05.2014 16:58:48
А если сделать геттер пустым

get{;}

тоже не скомпилируется?