2012-03-30 1 views
1

Afterthought를 알아 내려고합니다. 어떤 속성 setter가 호출 될 때 HasChanged 변수를 설정하려고합니다. 나는 다음과 같은 코드를 가지고있다Afterholdt를 사용하여 간단한 Property Ammendment를 구현하는 방법

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이 가장 최신 버전입니다. 최신 버전으로 업데이트를 시도해보십시오. 문제가 계속되는 경우 추가 지원이 가능한지 확인하겠습니다.

편집 실제로 처음 시도 할 때 컴파일하려면 변경해야합니다. 나는에 AfterSet을 변경 :

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

하지만 그건 정말 문제의 일부가 아닌 이후, 나는 즉시 그것에 대해 잊어 버렸습니다. :)

+0

너무 두껍습니다. 미안하지만 버전 1.0.8은 어디서 구할 수 있습니까? 나는 여기에서 코드를 다운로드하고 컴파일했다. https://github.com/vc3/Afterthought.git .dll의 버전은 여전히 ​​1.0.6이다. – user10479

+0

NuGet에서 사본을 받았습니다. –

+0

NuGet의 버전 정보가 1.0.8이고 packages.config의 버전 정보가 1.0.8인데 References 폴더의 Afterthough.dll을 클릭하면 버전 1.0.6.0이 표시되고 여전히 컴파일되지 않습니다. – user10479

관련 문제