3

"このオブジェクトに対して定義されたパラメータのないコンストラクタはありません"というエラーが何百万回も出されています。私の状況は違うパラメータなしのコンストラクタ、構造マップ、新しい領域なし

私は働いているアプリがあります。多くのコントローラーが多数あり、1つに多くのコントローラーがあります。私はちょうど新しいエリアを追加しました。私はコントローラを追加し、そのコントローラへのリンクを追加しました。今すぐ 「このオブジェクトに対して定義されたパラメータのないコンストラクタがありません」というエラーが表示される

私はこれまでにこの問題を見て克服しましたが、実際は5ヶ月に1回のようにしか起こりません。そして、毎回私は答えを完全に忘れてしまいました。

RAIF

+1

サウンドコントローラはのStructureMapによって作成されていないかのように? – Lucero

+0

コンストラクタがある場所のコード例を貼り付けてください。オブジェクトを使用している場所にいくつかのメソッドオーバーロードを作成し、不正なコンストラクタを呼び出すようなエラー音が出る可能性があります – MethodMan

+0

このコントローラは、 。コンストラクタは1つしかありません。これにはいくつかのサービスが注入されており、デバッガは決して動作しません。 – Raif

答えて

8

[OK]を助け、1つが、このエラーを取得する可能性がありますいくつかの理由があると思われます。驚くことではありませんが、パラメータのないコンストラクタを持たないこととは関係のない@#$%があります。私が気付いている2つは

です。1)エリアを使用していて、コントローラを1つの名前空間から新しいものに移動し、取得する領域を反映するために名前空間を更新しない場合このエラー。

2)コントローラのコンストラクタに何かを注入して注入するアイテムに問題がある場合(インスタンシエーションがないか、IOC登録に登録されていないか、他のランタイムエラー)、このエラーが発生します。

人々は他人のことを考えることができる場合は、エラーの原因がいくつかあると思うので、ここにリストする必要があります。 R

+1

Visual Studioでプロジェクトをデバッグし、出力パネルをチェックすると、StructureMapが構築できなかったオブジェクトを正確に示すメッセージが表示されます。 アクセス修飾子が正しくないためにエラーが発生しています。あなたのインタフェースがpublicであるにもかかわらず、あなたの具体的なクラスがそうでない場合、StructureMapは具象クラスのインスタンスを構築できないかもしれません。 – Richard

+0

また、具象クラスがインターフェイスから継承することを確認する必要があります。 – d456

+0

ありがとうございます。私はSMを学んでいるだけで、このエラーを乗り越えることはできませんでした。あなたのヒントのおかげで、私のサンプルクラスには "public"アクセサがないことに気付きました。愚かな間違いは私のところではあるが、エラーメッセージはまったく役に立たなかった。 – camainc

0

これは本当にあなたの質問に答えることはできませんが、あなたの答えは私のトラブルシューティングの取り組みに役立ちました。

MVC ContribプロジェクトからMVCポータブルエリアを使用している間に、この同じ問題が発生しました。私は、IOCの登録時にアセンブリのためにこの線に沿って何かをスキャンするときに任意のDLLはポータブルの分野も含まれていなければならないていた依存関係ことが判明:

ObjectFactory.Initialize(x => x.Scan(y => 
    { 
     y.Assembly("PortableAreaAssemblyName"); 
    })); 
ObjectFactory.Configure(x => 
    { 
     x.For<IClassInterfaceUsedByControllerConstructor>().Use<IntendedClassInstance>(); 
    }); 
関連する問題