3

私は一般的なインターフェースを持っています:

public interface IRepository<T> { ... }

私はこのような実装を持っています:

public class Repository<T> {
    public Repository<T>() { ... }
}

StructureMap (v 2.6.3) は次のように構成されています。

For(typeof(IRepository<>)).Use(typeof(Repository<>));

IRepository<Something>StructureMap から を取得しようとするとRepository<Something>、期待どおりの が得られます。万歳!

2 つ目のコンストラクターを追加したので、実装は次のようになります。

public class Repository<T> {
    public Repository<T>() { ... }
    public Repository<T>(string database) { ... }
} 

now を取得しようとするとIRepository<Something>、デフォルトでパラメーターで新しいコンストラクターを使用しようとするため、例外が発生します。ブー!

パラメーターなしのコンストラクターを使用するように、StructureMap 構成を変更するにはどうすればよいですか?

4

1 に答える 1

5

これを実現するには、StructureMap で使用するコンストラクターを [DefaultConstructor] 属性でマークします。StructureMap ドキュメントでわかるように、デフォルトでは貪欲です。

于 2012-05-18T11:44:44.707 に答える