変数エンティティを汎用関数に渡すには?


質問

Entity Framework Database Firstを介してエンティティを生成し、そのような関数を使用したい場合:

AuditManager.DefaultConfiguration.Exclude<T>();

私がそれを呼び出す回数がエンティティの数と等しくなければならないと考えている

例:

AuditManager.DefaultConfiguration.Exclude<T>();

どのように選択した数のエンティティをループし、すべてをExclude関数に渡すのですか?

受け入れられた回答

明らかな解決策は、非表示にするエンティティタイプごとにメソッドを呼び出すことです。このような:

AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();

(あなたは、条件文を追加することができifそれらの周りs)は、動的にそれを行うこと。

メタデータに基づいてExcludeメソッドを呼び出す、完全に柔軟なソリューションが必要な場合は、何かが必要です。このようなもの:

AuditManager.DefaultConfiguration.Exclude<Employee>();
AuditManager.DefaultConfiguration.Exclude<Department>();
AuditManager.DefaultConfiguration.Exclude<Room>();

これは、 Exclude<T>メソッドが、 DefaultConfiguration指すインスタンスのインスタンスメソッドであることを前提としています。


人気のある回答

エンティティタイプをループする代わりに、監査したくないエンティティを同じインターフェイスに実装して除外することもできます。例えば:

public interface IExcludeFromAudit
{ }

あなたのエンティティ:

public interface IExcludeFromAudit
{ }

そして今、インターフェイスを除外します:

public interface IExcludeFromAudit
{ }

これの利点は、除外されるものを簡単に制御できるようになったことです。





ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ