2017-11-20 4 views
1

私がしたいのは(app.config内で)シングルトン 'Int32'を定義することだけです。そのアイデアは、それが名前付きの登録であり、複数の他の型定義のパラメータとして使用されるということです。つまり、実際のint値自体は一度定義する必要があります(手動エラーを減らす)。次の線に沿ってUnity Container - シングルトン "Int32"を登録する

何か...

<register type="int" name="MyInt"> 
    <lifetime type="singleton" /> 
    <constructor> 
     <param name="value" value="23"/>   
    </constructor> 
    </register> 

は、今私はのInt32構造は、このようなコンストラクタを持っていません実現が、私は要求していますが、私はそれはカント信じるカントように、単純なようです完了しました。

明らかなものがありませんか?

乾杯!

答えて

1

あなたは、単一のインスタンスを指定することができるはずです。

そうのように解決され
<container> 
    <instance name="FooBar" type="System.Int32" value="123" /> 
</container> 

:あなたが設定から別の型を構築するために必要となる場合は、それがそうするようなものだ

int value = container.Resolve<int>("FooBar"); 

<!-- "SomeType" is a type here, but you can have any mapping here --> 
<register type="SomeType"> 
    <constructor> 
    <!-- "value" is the name of the constructor argument --> 
    <param name="value" dependencyName="FooBar" /> 
    </constructor> 
</register> 
+0

まさに私が何をしたのか。 Microsoftのドキュメントではっきりとはっきりしない! –

0

動作を依存関係インジェクションから読み取り設定ファイルに変更できますか? Here good example int値を設定ファイルに置き、DIなしで読み取る方法。

第2の解決策:単一のプロパティと必要なコンストラクタを使用して、int値を単純なオブジェクトにラップすることができます。

+0

最初のオプションはすべてDIを維持しようとしています。私はすでに後者の提案(小さなラッパーオブジェクト)を実装していますが、それはちょっとしたようです - したがって、この質問! –

+0

最初のソリューションを使用できますか?それはapp.configから値を変更し、コード内のどこでも値を使用することができます。 –

+0

強力な型付けされた構成がありますが、このソリューションにはいくつかのコードが必要です。ここでは、作成方法について説明しています。https://msdn.microsoft.com/en-us/library/2tw134k3.aspx –

関連する問題