Luk*_*uke 6 c# metaprogramming
我有一些只用于包含数据的类.例如
public class EntityAdresse : IEntityADRESSE
{
public string Name1 { get; set; }
public string Strasse { get; set; }
public string Plz { get; set; }
public string Ort { get; set; }
public string NatelD { get; set; }
public string Mail { get; set; }
public int Id_anrede { get; set; }
public string Telefon { get; set; }
public int Id_adr { get; set; }
public int Cis_adr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这代表一个地址.就像我说的,它只包含数据.没有方法(我知道界面在这里没有意义......)
现在我需要为所有这些Entity-Classes实现ToString,并且有很多它们.
我的问题是:C#中是否有一个元编程功能可以自动生成这种tostring方法?我不想为这些类中的每一个编写样板代码.
或者,我也可以编写一个perl或python脚本来生成代码.但我更喜欢直接在C#中使用它.
通常,您需要获取类的所有属性值并将它们组合成单个字符串.这可以使用以下方法完成:
public override string ToString()
{
PropertyDescriptorCollection coll = TypeDescriptor.GetProperties(this);
StringBuilder builder = new StringBuilder();
foreach(PropertyDescriptor pd in coll)
{
builder.Append(string.Format("{0} : {1}", pd.Name , pd.GetValue(this).ToString()));
}
return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)