C# 生成自定义属性代码i VS?
我讨厌写重复的代码 在我当前的项目中,我需要编写在每个类中看起来相同但在每个类中不同的属性 我的愿望是从私有memeber变量生成自定义属性。假设我声明了这样一个Name变量C# 生成自定义属性代码i VS?,c#,visual-studio-2010,properties,code-generation,C#,Visual Studio 2010,Properties,Code Generation,我讨厌写重复的代码 在我当前的项目中,我需要编写在每个类中看起来相同但在每个类中不同的属性 我的愿望是从私有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_c
private string Name;
在我的第一堂课中,我想自动生成如下属性:
private string m_name;
public string Name
{
get
{ return m_name; }
set
{
m_name = value;
// some code....e.g.
m_counter++;
}
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;
}
}
也许我想在我的第二个类中实现另一个,例如
private string m_name;
public string Name
{
get
{ return m_name; }
set
{
// some code....e.g.
if(MyValidationFramework.Validate("Name", value))
{
m_name = value;
}
}
我知道我可以创建自己的代码片段。由于我经常更改属性实现,因此我希望能够从模板生成属性,然后更改模板并再次生成属性。这能做到吗
谢谢 这不是对你问题的直接回答。但是,在您展示的示例中,为什么不使用基类并从中继承,如下所示:
private string m_name;
public string Name
{
get
{ return m_name; }
set
{
m_name = value;
// some code....e.g.
m_counter++;
}
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文件,您需要为其更改内容
看来复制/粘贴是你最好的选择。我现在就是这样做的!但它只有在实现相似的情况下才起作用。@Erik Z-您可以保留基类中相似的部分,以及子类中不同的部分。