2011-05-25 31 views
0

我討厭寫重複的代碼....生成自定義屬性代碼我VS?

在我目前的項目,我需要編寫看起來每個類相同,但不同類類屬性。

我的願望是從私人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; 
    } 
} 

我知道我可以創建自己的片段。由於我經常更改屬性實現,所以我想用一種方法從模板生成屬性,然後更改模板並再次生成屬性。這可以做到嗎?

謝謝!

回答

0

這不是直接回答你的問題。然而,隨着你展示的例子,爲什麼不能有一個基類,繼承它,就像這樣:

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; 
    } 
} 

[編輯]

我看你那片段是不適合你的選擇。
您可以創建一個項目模板,(How to: Manually Create Item Templates),但最終這是更加努力的,因爲您希望能夠動態更新這些項目。項目模板是一個zip文件,您需要更改內容。

似乎複製/粘貼是你最好的選擇。

+0

這就是我現在要做的!但它只適用於實現類似的情況。 – 2011-05-25 08:14:31

+0

@Erik Z - 您可以保留基類中類似的部分,以及子類中的不同部分。 – 2011-05-25 08:16:41