Как реализовать простое изменение свойств с помощью Afterthought

Я пытаюсь выяснить Afterthought. Я хочу установить переменную 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 ответ

Решение

Ваш пример кода компилируется для меня.

Я считаю, что свободный интерфейс не был добавлен до версии 1.0.8, которая является самой последней версией. Попробуйте обновить до последней версии, и если у вас все еще есть проблемы, я посмотрю, смогу ли я помочь дальше.

Edit Мне действительно нужно было сделать одно изменение, чтобы компилировать его при первой попытке. Я изменил AfterSet чтобы:

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

Но так как это не было частью вопроса, я быстро забыл об этом.:)

Другие вопросы по тегам