2

起動時に構成されたインターフェイスの具象型がありますが、プロパティを設定するか、コンストラクターで異なる値を設定して、実行時に具象型のインスタンスを作成したいと考えています。私が見るすべてのインスタンスの作成は、具象型が何であるかを知っていますが、実行時には具象型がわかりません。具体的な型を知らなくても、インターフェイス/クラスの具体的なインスタンスを作成する方法はありますか? これは私が見たものです:

[Test]
public void DeepInstanceTest_with_SmartInstance()
{
    assertThingMatches(registry =>
    {
        registry.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>()
                .WithCtorArg("name").EqualTo("Jeremy")
                .WithCtorArg("count").EqualTo(4)
                .WithCtorArg("average").EqualTo(.333);
        });
}

また:

var container = new  Container(x =>
{
    x.ForConcreteType<SimplePropertyTarget>().Configure
     .SetProperty(target =>
     {
         target.Name = "Max";
         target.Age = 4;
     });
});

私は似たようなことをしたい...しかし、具象型がわからない....抽象クラスまたはインターフェースのみ(この場合はプロパティを持つ)。ただし、具体的なタイプは構成されています。

4

2 に答える 2

2

Jeremy Miller(StructureMapの作者)からの指示で答えを見つけました。これが彼が私に指摘したところです:

http://structuremap.sourceforge.net/RetrieveingServices.htm#section5

これが私が使用したものの例です:

IDatabaseRepository repo =
                ObjectFactory.With("server").EqualTo("servername").
                With("database").EqualTo("dbName").
                With("user").EqualTo("userName").
                With("password").EqualTo("password").
                GetInstance<IDatabaseRepository>();
于 2009-02-25T14:02:44.343 に答える
0

具体的なインスタンスを作成するには、ある種のファクトリ パターンが必要です。作成の瞬間は、具体的な実装が何であるかを知る必要があります。

于 2009-02-24T23:28:05.723 に答える