如何实施简单的财产修正​​与事后考虑

时间:2012-03-30 14:15:45

标签: c# aop

我正在试图找出事后的想法。我想在调用任何属性setter时设置变量HasChanged。我有以下代码

public class TestUser
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool HasChanged { get; set; }
}

public class TestUserAmmendment<T> : Amendment<T, T> where T : TestUser
{
    public TestUserAmmendment()
    {
        Properties
            .Where(p => p.PropertyInfo.CanRead
                && p.PropertyInfo.CanWrite
                && p.PropertyInfo.GetSetMethod().IsPublic
                && p.Name != "HasChanged")
            .AfterSet(instance.HasChanged = true);
    }
}

但我收到编译错误The name 'Properties' does not exist in the current context。我已经从单元测试中复制了代码,我可以编译并运行它。我不确定,但有谁知道如何使用Afterthought实现这个简单的方面?

1 个答案:

答案 0 :(得分:1)

您的示例代码为我编译。

我相信,在1.0.8版本之前,没有添加流畅的界面,这是最新版本。尝试更新到最新版本,如果您仍然遇到问题,我会看看是否可以提供更多帮助。

修改 实际上,我确实必须进行一次更改,以便在我第一次尝试时进行编译。我将AfterSet更改为:

.AfterSet((instance, x, y, z, a) => instance.HasChanged = true);

但由于这不是问题的一部分,我很快就忘记了。 :)