Entity Framework オブジェクト (および負荷を軽減するために使用される他の構造体や単純なクラス) を生成し、それらをクライアント アプリケーションに送信する WCF サービスがあります。
2 つのクラスを変更してインターフェイスを実装し、アプリケーションでそれらを単一のオブジェクト タイプとして参照できるようにしました。この例によく似ています: Entity Framework によって生成されたプロパティにインターフェイスを実装することを強制することは可能ですか?
ただし、ネットワーク経由で送り返されるオブジェクトで直接参照されないため、インターフェイス タイプは WCF サービス プロキシ クライアントの thingymebob に追加されません。
したがって、サービス プロキシ クラスを使用するアプリケーションでは、インターフェイスをキャストまたは参照できません。
私が見逃しているアイデアはありますか?
コード例を次に示します。
//ASSEMBLY/PROJECT 1 -- EF data model
namespace Model
{
public interface ISecurable
{
[DataMember]
long AccessMask { get; set; }
}
//partial class extending EF generated class
//there is also a class defined as "public partial class Company : ISecurable"
public partial class Chart : ISecurable
{
private long _AccessMask = 0;
public long AccessMask
{
get { return _AccessMask; }
set { _AccessMask = value; }
}
public void GetPermission(Guid userId)
{
ChartEntityModel model = new ChartEntityModel();
Task task = model.Task_GetMaskForObject(_ChartId, userId).FirstOrDefault();
_AccessMask = (task == null) ? 0 : task.AccessMask;
}
}
}
//ASSEMBLY/PROJECT 2 -- WCF web service
namespace ChartService
{
public Chart GetChart(Guid chartId, Guid userId)
{
Chart chart = LoadChartWithEF(chartId);
chart.GetPermission(userId); //load chart perms
return chart; //send it over the wire
}
}