使用属性触发属性的get和set

时间:2015-03-24 05:45:31

标签: c# attributes

我需要构建一个覆盖getter和属性setter的属性。更清楚的是,今天它是如何工作的以及如何使用属性(结果应该是相同的)。

旧版本:

public class A
{
    private Handle _handle;

    public String StringProp 
    {
        get {
            return _handle.GetProperty(PropId.StringProp);
        }
        set {
            _handle.SetProperty(PropId.StringProp, value);
        }
    }

    public int IntProp 
    {
        get {
            return _handle.GetProperty(PropId.IntProp);
        }
        set {
            _handle.SetProperty(PropId.IntProp, value);
        }
    }
}

新版本:

public class A
{
    private Handle _handle;

    [HandleProperty(PropId.StringProp)]
    public String StringProp { get; set; }

    [HandleProperty(PropId.IntProp)]
    public int IntProp { get; set; }
}

应知道属性HandleProperty将getter和setter链接到_handle.GetProperty_handle.SetProperty

1 个答案:

答案 0 :(得分:0)

我创建了两个枚举,一个枚举中的一些字段使用属性映射到另一个枚举字段。我想你可以做这样的事......

[AttributeUsage(AttributeTargets.Field)]
public sealed class MapsToAttribute : Attribute
{
    private string Text;

    public string MapsToText
    {
        get
        {
            return Text;
        }
    }

    public MapsToAttribute(string mapsToText)
    {
        Text = mapsToText;
    }

    public override string ToString()
    {
        return Text;
    }
}