2013-12-05 3 views
0

Как создать несколько обработчиков для getter и setter, чтобы не писать одинаковый код для каждого поля. Я понимаю, что для этого есть образец дизайна.Несколько геттеров и сеттеров

public class TestClass 
{ 
    private string _firstName; 
    private string _lastName; 
    private string _personDescription; 
    private string _other; 

    public TestClass() { } 

    //same for lastName, personDescription, other 
    public string FirstName 
    { 
     get 
     { 
      return _firstName; 
     } 
     set 
     { 
      _firstName = FixValue(value); 
     } 
    } 

    private string FixValue(string value) 
    { 
     value = value.Trim(); 
     if (value == string.Empty) 
     { 
      return null; 
     } 

     return value; 
    } 
} 
+0

У меня была такая же проблема. Я использую фрагменты кода в Visual Studio и просто создаю новый кусок кода для каждой переменной. Создать собственный фрагмент кода (http://msdn.microsoft.com/en-us/library/ms165394.aspx). Надеюсь, это было полезно. – mkamioner

+0

Да, нет настоящего чистого способа, кроме этого. Обычно есть несколько макросов, чтобы сделать такие вещи более легкими, но результат будет таким же. – Davio

+1

Единственное, что я могу сказать, это то, что если бы у вас была PostSharp или какая-то другая структура AOP, вы могли бы использовать аспект. Я не думаю, что есть другие способы сделать это на C#. PS: Вероятно, вы должны проверить, является ли значение «value» равным null перед вызовом 'value.Trim()'. –

ответ

3

Один из возможных способов сделать это через Aspect Oriented Programming.

В принципе, вы создаете аспект, который определяет пользовательскую функциональность, которая вводится в ваш код во время компиляции.

Примером такой библиотеки является PostSharp. Взгляните на учебник PostSharp Property and Field Interception.

В вашем случае вам необходимо реализовать метод OnSetValue, где вы можете добавить свой код. Затем добавьте атрибут, созданный выше вашего свойства.

0

есть код по умолчанию propfull, propg и prop (по крайней мере, в визуальной студии 2010). но вы все равно должны ввести имя и тип данных. вы можете скопировать фрагмент фрагмента и изменить его, чтобы вызвать свой собственный метод в наборе.

автоматического создания свойства, вы можете также RightClick на переменной, нажмите на реорганизовать затем нажмите инкапсулировать поле. Введите имя свойства или используйте значение по умолчанию. нажмите ОК дважды или введите.

Смежные вопросы