2017-01-24 8 views
1

ASP.NET(およびコア)コントローラはpublicである必要があります。ASP.NET Coreコントローラを内部で作成できますか?

問題(私はそのコンストラクタで)何かに応じてコントローラを持っていますinternal。その依存関係は何か内部に依存します。これは内部などに依存しますので、コントローラーをinternalにする必要があります。

しかしコントローラ工場では検出されません。

internalコントローラを検出可能にする方法はありますか。

+1

次に、あなたが内部の依存関係にパブリックインターフェイスを適用する必要がありますか?公共は内部より高いですが、依存関係が内部であるかどうかは関係ありません。それがコンストラクタに含まれていない限り、 – DevEstacion

+0

@DevEstacionはい、コンストラクタ内にあります。 – grokky

+0

それをパラメータとして注入したり、コンストラクタ宣言でインスタンス化したり、それを使用するメソッドを提供したりしないでください。 – DevEstacion

答えて

5

壮介あなたは、この(それは常にあなたの質問にMCVEを含めることができます)があります。

internal class FooDependency 
{ 

} 

public class FooController 
{ 
    public FooController(FooDependency dependency) 
    { 
     // ... 
    } 
} 

をそして、あなたはFooDependencyを公開することはできませんが、公共するFooControllerが必要ですか?あなたが言っているこの依存関係を投稿することができます

public interface IFooDependency 
{ 

} 

internal class FooDependency : IFooDependency 
{ 

} 

public class FooController 
{ 
    public FooController(IFooDependency dependency) 
    { 
     // ... 
    } 
} 
+0

これは私の場合はありがたいことですが、デザインには必ずしも適合しません。特定の内部コントローラを見つけるためにコントローラファクトリを設定できるのが最善でしょうが、それが可能かどうかはわかりません。 – grokky

関連する問題