「ビュー」を通じてオブジェクトを公開する柔軟な方法を見つけようとしています。例を挙げて説明したほうがいいかもしれません。
Entity Framework エンティティ モデルと、クエリに使用できる Web サービスがあります。エンティティ クラス自体を返すことはできますが、これには、共有したくないフィールドがいくつか含まれます。たとえば、ID や、エンティティ モデル内の任意の関連付けからの参照プロパティです。
必要なのはデータのビューだと思いますが、戻り値の型ごとにビュー ラッパー クラスを書きたいとは特に思いません。インターフェイスを定義して、それを何らかの形で利用できるようになることを願っています。例えば:
interface IPersonView
{
string FirstName { get; }
string LastName { get; }
}
-
// (Web service method)
IPersonView GetPerson(int id)
{
var personEntity = [...];
return GetView<IPersonView>(personEntity);
}
ただし、このようなことを行うには、エンティティにビュー インターフェイスを実装させる必要があります。オブジェクトには多くのビューが存在する可能性があるため、より柔軟な「ダックタイプ」のアプローチを望んでいましたが、それらすべてを実装する必要はありません。
インターフェイスを反映し、フィールドとプロパティをコピーすることで動的型を構築することに成功しましたが、Web サービスで強い型付けを行うためにこれをインターフェイス型にキャストすることはできません。
コメントとアドバイスを探しているだけで、どちらも大歓迎です。ありがとう。