Создать код пользовательских свойств я VS? - PullRequest
0 голосов
/ 25 мая 2011

Я ненавижу писать повторяющийся код ....

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

Мое желаниезаключается в создании пользовательских свойств из частных переменных memeber.Допустим, я объявил переменную Name следующим образом.

private string Name;

В моем первом классе я хочу автоматически сгенерировать свойство, подобное этому:

private string m_name;
public string Name
{
get
{ return m_name; }
set
{
  m_name = value;
  // some code....e.g.
  m_counter++;
}

И, возможно, я хочу другую реализацию вмой второй класс, например

private string m_name;
public string Name
{
get
{ return m_name; }
set
{
  // some code....e.g.
  if(MyValidationFramework.Validate("Name", value))
  {
    m_name = value;
  }
}

Я знаю, что могу создавать свои собственные фрагменты.Поскольку я часто меняю реализацию свойства, мне нужен способ генерировать свойства из шаблона, затем изменять шаблон и генерировать свойства снова.Можно ли это сделать?

Спасибо!

1 Ответ

0 голосов
/ 25 мая 2011

Это не прямой ответ на ваш вопрос. Однако на примере, который вы показываете, почему бы не иметь базовый класс и не наследовать его, например:

public abstract class BaseClass
{
    private string m_name;

    public string Name
    {
        get { return m_name; }
        set
        {
            if (BeforeNameSet(value))
                m_name = value;
        }
    }

    public virtual bool BeforeNameSet(string name)
    {
        return true;
    }
}

public abstract class ChildClass : BaseClass
{
    public override bool BeforeNameSet(string name)
    {
        // do the part that is different
        return false;
    }
}

[Изменить]

Я вижу, что фрагменты не подходят для вас.
Вы можете создать шаблон элемента ( Как: вручную создавать шаблоны элементов ), но, в конце концов, это еще больше усилий, так как вы хотите иметь возможность их динамического обновления. Шаблон элемента - это zip-файл, для которого вам необходимо изменить содержимое.

Похоже, что копирование / вставка - ваш лучший вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...