如何用Afterthink实现简单的属性Ammendment

本文关键字:属性 Ammendment 简单 实现 何用 Afterthink | 更新日期: 2023-09-27 18:29:42

我正试图弄清楚Afterthink。我想在调用任何属性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。我已经从单元测试中复制了代码,我可以编译并运行这些代码。我不确定,但有人知道我如何使用Afterthink实现这个简单的方面吗?

如何用Afterthink实现简单的属性Ammendment

您的示例代码为我编译。

我相信,直到1.0.8版本才添加fluent接口,这是最新的版本。试着更新到最新版本,如果你仍然有问题,我会看看我是否能提供进一步的帮助。

编辑事实上,我第一次尝试时确实需要做一个更改才能编译它。我将AfterSet更改为:

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

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