2012-03-30 5 views
1

私はAfterthoughtを理解しようとしています。任意のプロパティセッターが呼び出されたときに、変数HasChangedを設定したいと思います。私は、次のコードAfterthoughtで単純なプロパティ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まで、私は信じて、追加されませんでした。最新のバージョンにアップデートしてください。まだ問題が解決しない場合は、私がさらにサポートできるかどうかを確認します。

編集 実際に初めて試したときにコンパイルするには、1つの変更を加えなければなりませんでした。私はに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

関連する問題