質問するログイン新規登録

回答編集履歴

3

最後の1行追記

2017/05/17 11:38

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -110,4 +110,5 @@
110
110
  NinjectはDIコンテナだけど設定ファイルを使わないので、その分プログラマーには直観的だと思う。
111
111
  ymlだのXMLだので設定ファイルを書いてインジェクションするよりよっぽど使うのが簡単なので、発想はC#未経験でもページを見ればわかると思う。
112
112
 
113
- 設定ファイルを書くDIコンテナは、設定ファイルを読み込んで動作を変更できるようにちょっと変えただけだ。
113
+ 設定ファイルを書くDIコンテナは、設定ファイルを読み込んで動作を変更できるようにちょっと変えただけだ。
114
+ 設定ファイルを使う場合は、現在アプリケーションに読み込まれてる型情報をリフレクションで取得しておいて、その情報に設定ファイルから得たオプションを適用していく、という形になるだろうね。

2

文章の修正

2017/05/17 11:38

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -86,7 +86,7 @@
86
86
  ```
87
87
 
88
88
  情報を収集し、展開する。
89
- それは別にメソッドでもいいし、一般的なDIコンテナみたいになんらかのファイルでもいい。
89
+ 収集方法は別にメソッドでもいいし、一般的なDIコンテナみたいになんらかのファイルでもいい。
90
90
  基本は、あるインスタンスの生成方法を集積して、再帰的に呼ぶだけ。
91
91
  インスタンス化できなければ情報不足として例外を投げればいい。
92
92
 
@@ -100,13 +100,14 @@
100
100
  ```C#
101
101
  var container = new MyDIContainer();
102
102
 
103
+ // ISomeClassという型には、ImplemetedClassをインスタンス化してよこせ、と指示を出す。
103
104
  container.Bind<ISomeClass>().To<ImplementedClass>();
104
105
 
105
106
  var implemented = container.Get<ISomeClass>();
106
107
  ```
107
108
 
108
109
  ちなみにこれはNinjectっていうC#のDIコンテナを僕が使っているのでその構造に強く影響を受けている。
109
- NinjectはDIコンテナだけど設定ファイルを使わない、その分プログラマーには直観的だと思う。
110
+ NinjectはDIコンテナだけど設定ファイルを使わないので、その分プログラマーには直観的だと思う。
110
111
  ymlだのXMLだので設定ファイルを書いてインジェクションするよりよっぽど使うのが簡単なので、発想はC#未経験でもページを見ればわかると思う。
111
112
 
112
113
  設定ファイルを書くDIコンテナは、設定ファイルを読み込んで動作を変更できるようにちょっと変えただけだ。

1

追記

2017/05/17 11:36

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  下記は、今、このページで打っただけだから下記のコードはぐだぐだだけども、一通り必要そうなコードを書いてみた。
12
12
 
13
13
 
14
- ```
14
+ ```C#
15
15
  // あるクラスのインジェクションに関係する情報を集める
16
16
  // これは関数で支持を出しても良いし、よりよい形ではリフレクションでも良い
17
17
  BindingInfo<T> Bind<T>()
@@ -92,4 +92,21 @@
92
92
 
93
93
  実行時の動作変更用のオプションの拡張、インスタンス化に関する情報のキャッシュで高速化だとか、まあそういう細かいのはいっぱいあるだろうと思う。
94
94
 
95
- とりあえず… 既存のOSSのDIコンテナのソースを見よう!
95
+ とりあえず… 既存のOSSのDIコンテナのソースを見よう!
96
+
97
+ #追記
98
+
99
+ 上のクラスの使い方の想定をかいてなかったね。
100
+ ```C#
101
+ var container = new MyDIContainer();
102
+
103
+ container.Bind<ISomeClass>().To<ImplementedClass>();
104
+
105
+ var implemented = container.Get<ISomeClass>();
106
+ ```
107
+
108
+ ちなみにこれはNinjectっていうC#のDIコンテナを僕が使っているのでその構造に強く影響を受けている。
109
+ NinjectはDIコンテナだけど、設定ファイルを使わない、その分プログラマーには直観的だと思う。
110
+ ymlだのXMLだので設定ファイルを書いてインジェクションするよりよっぽど使うのが簡単なので、発想はC#未経験でもページを見ればわかると思う。
111
+
112
+ 設定ファイルを書くDIコンテナは、設定ファイルを読み込んで動作を変更できるようにちょっと変えただけだ。