C#创建属性,指示在属性调用后运行代码

Ron*_*nny 6 .net c# proxy attributes properties

我想创建一个属性来放置属性.

包含此属性的属性将在设置新值后执行另一个方法.

例如:

    [MethodExecute(Log)]
    [MethodExecute(Save)]
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在这里,我想激活两个方法,一个将记录更改,另一个将保存它.

谢谢,罗尼

Jon*_*eet 6

我相信你可以在PostSharp中做到这一点.不幸的是,您需要将方法名称指定为字符串 - 在C#中没有运算符来解析方法名称MethodInfo,尽管已经提出了几次.

如果您需要在setter(而不是getter)之后执行代码,则可能需要移动该属性:

public string Name
{ 
    get; 
    [MethodExecute("Log")] [MethodExecute("Save")] set;
}
Run Code Online (Sandbox Code Playgroud)

(为简单起见,它使用自动实现的属性.)