nullを返すIFactoryObject
を作成し、「特定のアプリケーション」設定ファイルで設定することができます。関連する質問:How do I configure a NULL object in Spring.Netを参照してください。
さらに、Dep2が任意の依存性(たとえば、nullでもよいし、適切なデフォルト値を持つ)である場合は、プロパティとして定義してプロパティ注入を使用する方がよいでしょう。
編集
nullを返しますIFactoryObject
は春のコンテナによってエラーとして扱われているので、私は仕事にこれを期待したが、それは実際にはしません:IFactoryObject.GetObject()
上のAPIドキュメントから
この方法は、封入のIoC 容器とリターンのコンテキスト内で呼び出されている場合、IoCコンテナは Tを検討します彼の工場オブジェクトは完全に初期化されておらず、 に相当する(そしておそらく致命的な)例外がスローされます。
クラス:configfile1.xmlで
public class MyClass
{
public MyOtherClass Prop { get; set; }
public MyClass(MyOtherClass ref1)
{
}
}
public class MyOtherClass
{
}
public class NullFactoryObject : IFactoryObject
{
public object GetObject()
{
return null;
}
public Type ObjectType
{
get { return typeof(MyOtherClass); }
}
public bool IsSingleton
{
get { return true; }
}
}
:configfile2.xmlで
<object id="MyObject" type="q9292066_null_object_reference.MyClass, q9292066_null_object_reference">
<constructor-arg name="ref1" ref="ref1" />
</object>
:
<object id="ref1"
type="q9292066_null_object_reference.NullFactoryObject, q9292066_null_object_reference" />
Marijn、あなたはこのもう少し明確にすることができます。私はO1FactoryObjectを実装しました。 Dep1/Dep2をO1FactoryObjectに渡すために推奨される方法は何ですか?私がプロパティ/ constrcutor refとして渡すと、私は私の質問と同じ問題に直面するでしょう。 Dep1/Dep2を単純な文字列として渡すと、O1FactoryObjectコードでそれらを取得する必要があります。それは正しい解決策ですか?一緒に初期化の順序を処理する依存している?ありがとう。 – Filip
私はいくつかのコードを追加します... – Marijn
done ...まだテストされていません、後でそれを行います。 – Marijn