1

私は次の POC を書きましたが、これを達成する方法について非常に混乱していることを認めなければなりません。

public class Parent
{
    public string Str;

    public Parent()
    {
    }
}

public class Child : Parent
{

}

public class Program
{
    static void Main(string[] args)
    {
        var container = new Container();
        var prop = typeof (Parent).GetMember(nameof(Parent.Str)).First();
        var x = new [] { PropertyOrFieldServiceInfo.Of(prop) };
        container.Register<Parent, Parent>(made: Made.Of(propertiesAndFields: (r) => x));
        // Set "X" somewhere??    
        container.Register<Child, Child>();

        var parent = container.Resolve<Parent>();
        var child = container.Resolve<Parent>();
    }
}

私の目標は、子と(それほど重要ではありませんが)親の両方のStrプロパティが「X」に設定されていることです。

以下のようなところをSpring.NetからDryIocに変換したいので知りたいです。

<object id="parentManager_transport" abstract="true">
  <property name="EntityManager" ref="entityManager_transport"/>
</object>

<object id="carManager" type="xxx" parent="parentManager_transport"/>
<object id="carMakerManager" type="yyy" parent="parentManager_transport"/>
<object id="carFuelManager" type="zzz" parent="parentManager_transport"/>
4

1 に答える 1

1

名前、タイプ、または条件に基づいて何を注入するかを指定するメソッドを備えた、su​​gar PropertiesAndFields 静的クラスがあります。

container.Register<Parent>(
    made: PropertiesAndFields.Of.Name("Str", serviceKey: "someId"));

プロパティを設定するには、登録するだけです。複数の登録済み文字列と区別するには、サービス キーを指定します。

container.RegisterInstance("my string", serviceKey: "someId");
于 2016-03-07T20:34:43.683 に答える