私はNinjectを初めて使用するので、私がしようとしていることは不可能かもしれませんが、尋ねたかった. 以下フリーハンドなので誤字脱字があるかもしれません。私がインターフェースを持っているとしましょう:
public interface IPerson
{
string FirstName { get; set; }
string LastName { get; set;}
string GetFullName();
}
そして具体的な:
public class Person : IPerson
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string GetFullName()
{
return String.Concat(FirstName, " ", LastName);
}
}
私が慣れ親しんでいるのは、配列または xml からデータを取得するときの次のようなものです。
public IEnumerable<IPerson> GetPeople(string xml)
{
XElement persons = XElement.Parse(xml);
IEnumerable<IPerson> people = (
from person in persons.Descendants("person")
select new Person
{
FirstName = person.Attribute("FName").Value,
LastName = person.Attribute("LName").Value
}).ToList();
return people;
}
このようにコンクリートをインターフェースに密結合させたくありません。LINQ to Objects またはオブジェクト初期化子で Ninject を使用することに関する情報を見つけることができませんでした。私は間違った場所を探しているかもしれませんが、まったく運がない日を探しています。
カーネルをシングルトン インスタンスに入れ、それが機能するかどうかを確認することを考えていましたが、うまくいくかどうかはわかりません。また、カーネルを渡すのは悪いことだと聞いています。現在、これをクラス ライブラリに実装しようとしています。これが不可能な場合、この場合のベストプラクティスについて、誰かが例や提案を持っていますか? 助けてくれてありがとう。
編集: いくつかの回答に基づいて、明確にする必要があると感じています。はい、上記の例は短命に見えますが、それは単に私がやろうとしていた 1 つの作品の例にすぎません。より大きな図を見てみましょう。XML の代わりに、サードパーティの Web サービスを介してすべてのデータを収集し、そのためのインターフェイスを作成しているとします。データは、wsdl で定義されたオブジェクトである場合もあれば、xml 文字列である場合もあります。IPerson は、Person オブジェクトと User オブジェクトの両方に使用できます。移植可能である必要があり、他のプロジェクトで使用され、MVC3 Web アプリケーションに渡され、オブジェクトが JavaScript でも使用されるため、別のクラス ライブラリ内でこれを行います。これまでのすべての入力に感謝します。