2017-03-13 6 views
-3

私はオブジェクトクラスとしてインターフェイスを使用したい。あなたがオーチャードのようないくつかのCMSで見るもののように。例えば、IContentManagerインタフェースは、コンテンツに関する多くの操作を行うオブジェクトのように使用できます。 ViewModelとしてインタフェースを使用することもできます(最初は優先度があります)。 私はオブジェクトクラスとしてのインターフェイスの使用方法

public class BLL_DependencySetup : Autofac.Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<RoleService>().As<IRoleService>(); 
     builder.RegisterType<RoleMV>().As<IRole>().InstancePerDependency(); 
     base.Load(builder); 
    } 
} 

のようないくつかのことを行うためにAutofacを使用しますが、実際にそのまさに私が欲しいもの好きではありません。

public class ISRelatedContentsDriver : ContentPartDriver<ISRelatedContentsPart> 
{ 
    private readonly IContentManager _contentManager; 

    public ISRelatedContentsDriver(IContentManager contentManager) 
    { 
     _contentManager = contentManager; 
    } 

私は上記のようにいくつかしたいと思います。それはIoCと関係がありますか? 編集:私はちょうどその働きを知りたいです。それを私自身の建築で使っています。果樹園ではありません。

+3

どのような動作が望ましいかを説明します。 "オブジェクトクラスとしてのインタフェースを使用"は明確ではありません。 – CodeCaster

+0

@ CodeCaster 2番目のコードブロックは、私が欲しいものと同じです...ブログの投稿(トップ10を選択するなど)でIContentManagerを使用するオーチャードモジュールの一部です。私は私の建築で同じことをしたい。私のクラスを直接使用しないでください。彼らの親のインターフェイスを使用するか、または... –

答えて

1

クラスまたはインターフェイスはIDependencyから継承する必要があります。 その後、オーチャードの他のサービスと同様に注入することができます。例については

public interface MyInterface : IDependency 
{ 
    void DoSomething(); 
} 

public MyClass : MyInteface 
{ 
    public void DoSomething() 
    { 
     // work 
    } 
} 

public class ISRelatedContentsDriver : ContentPartDriver<ISRelatedContentsPart> 
{ 
    private readonly IContentManager _contentManager; 
    private readonly IMyInterface _myInterface; 

    public ISRelatedContentsDriver(IContentManager contentManager, IMyInterface myInterface) 
    { 
     _contentManager = contentManager; 
     _myInterface = myInterface; 
    } 
} 
+0

私はちょうどその働きを知りたいです。それを私自身の建築で使っています。果樹園ではありません。果樹園のカスタムインターフェイスのIDependecy –

+0

私のお詫び申し上げます、私はあなたの質問に誤解しました。私はあなたの質問がちょうどオートファックに関連していると思います。ただし、そのメカニズムをコピーしたい場合は、[実際の登録されている果樹園の実際の登録方法](https://github.com/OrchardCMS/Orchard/blob/dev/src/Orchard/Environment/ShellBuilders/ShellContainerFactory.cs)です。私はソースとF12を調べてみましたが、純粋なオートファックのチュートリアルがあなたのケースに合っているはずです。 – Xceno

0

あなたが求めている用語は、依存性の注入で、はい、それはのIoCとの関係であります。インタフェースとその実装を登録するには、IoCコンテナ(AutofacWindsorUnityなど)が必要です。そして、上記のようなサービスを利用することができます。

IoTコンテナのチュートリアルの1つを実行するか、新しいアーキテクチャを構築するかどうかを再考することをお勧めします。

関連する問題