C#中的元编程:自动ToString方法

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#中使用它.

pla*_*ton 8

通常,您需要获取类的所有属性值并将它们组合成单个字符串.这可以使用以下方法完成:

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)