エンティティ フレームワーク (DBContext で生成された DAL クラスですが、この質問には関係ありません) の上に配置する BLL コードをいくつか書いています。これが私のルーチンの1つです:
public static Customer Get(int32 CustID, IEnumerable<string> IncludeEntities = null)
{
}
したがって、それを呼び出すときに、「Orders」や「OrderDetails」など、含めたいエンティティのオプション リストである CustID を渡します。
Customer customer = CustomerBLLRepository.Get("ALFKI",
new[] { "Orders", "Orders.Order_Details"});
正常に動作しますが、文字列のリストまたは配列で呼び出すのは好きではありません。IDE が支援できるように、強力な型付けを取得したいと考えています。
次のように宣言することで、型のリストを受け取ることができます。
public static void GetTest(Int32 CustID, params Type[] IncludeEntities)
{
}
インクルードが機能するようにクラス名を文字列として取得しますが、呼び出し元は次のように typeofs を使用する必要があります。
CustomerRepository.GetTest(123, typeof(Order), typeof(OrderDetails));
これは世界の終わりではありませんが、OrderDetails は実際には Orders のナビゲーション プロパティであり、インクルードは Orders.OrderDetails と呼ばれる必要があり、どのエンティティ OrderDetails を見つけるためにコードを突っ込む必要があるため、これは問題を引き起こしますの子であり、文字列を生成します。
私が本当に欲しいのは、EFがインクルードとして望んでいるのと同じ形式でインクルードとして渡すエンティティの厳密に型指定されたリストですが、私はSOLだと思います。