1

Noobの質問

プロジェクトでEntityFrameworkを使用していますが、次のようにデザイナーでエンティティが生成されます。

public partial class CLMEntities : ObjectContext

より多くの機能のためにCLMEntitiesに継承させたいプロジェクトに別のクラスがあります。

public class MoreFunctionality

...もちろん、それはすでにから継承しているので、私はその継承を持つことはできませんObjectContext

どうすればこれを行うことができますか?

4

1 に答える 1

3

の機能に応じて、いくつかのオプションがありますMoreFunctionality

1:次のように、親クラスではなく汎用デコレータクラスにします。

public class MoreFunctionality<TEntities> where TEntities : ObjectContext
{
    private readonly TEntities _objectContext;

    public MoreFunctionality(TEntities objectContext)
    {
        this._objectContext = objectContext;
    }

    public TEntities ObjectContext
    {
        get { return this._objectContext; }
    }

    // Other behaviour
}

...そして、の代わりにデコレータを渡しObjectContextます。

2:それをインターフェースにし、次のような拡張メソッドを使用して動作を追加します。

public interface IMoreFunctionality
{
}

public partial class CLMEntities : ObjectContext, IMoreFunctionality
{
}

public static class MoreFunctionalityExtensions
{
    public static void SomeFunctionality(
        this IMoreFunctionality moreFunctionality)
    {
        // Do something...
    }

    public static void SomeMoreFunctionality(
        this IMoreFunctionality moreFunctionality)
    {
        // Do something else...
    }
}
于 2013-02-03T08:55:45.917 に答える