0

(私の悪い英語でごめんなさい)

Silverlight 4 +RIAサービス+EF4コードのみのアプリケーションでは、DbContextに「IsActive」フィールドを含むクラスがいくつかあります。エンティティにこのフィールドがあるかどうかをクライアントから知り、取得したいと思います。私の最初の考えは、インターフェースを使用することでした。

public interface IHasActiveField
{
    bool IsActive {get; set;}
}

public class Data: IHasActiveField
{
    public bool IsActive {get; set;}
}

これはサーバーでは正常に機能しますが、クライアントでは、RIAで生成されたコードにインターフェイスへの参照がないため、テストできません。クライアント側で、フィールドをif (obj is IHasActiveField)使用して基本クラスから継承しようとした場合も同じことが起こります。IsActiveクラスDataは常にから継承しEntityます-おそらく、リフレクションを使用してフィールドが存在するかどうかを確認するか、すべてのタイプ(if (obj is Data))をテストすることができますが、よりエレガントな方法が可能であれば、それははるかに優れています:)

4

1 に答える 1

1

次のブログはあなたが望むもののように聞こえます。

「モデルに部分クラスを使用し、ファイルに .shared.cs (または .shared.vb) という名前を付けるだけです。このファイルは自動的に Silverlight プロジェクトにコピーされるため、その中にあるものはすべてクライアントに保持されます。したがって、そのファイル内のすべてのインターフェイスの実装で、完了です。」 http://jeffhandley.com/archive/2009/03/30/ria-services-custom-interfaces.aspx

于 2011-11-12T04:28:35.467 に答える