ここで多くのスレッドに目を通しましたが (おそらく間違った用語を使用している可能性があります)、NInject を介して IoC を使用するように Web アプリケーションを変換しています。私の他のIoCプロジェクトはかなり小さいので大きな問題ではありませんでしたが、次の状況で推奨される方法は何ですか...
私のオブジェクトの構造は次のようになります...
public class Address
{
public virtual string Street { get; set; }
public virtual City City { get; set; }
}
都市はそれ自身のオブジェクトです...
public class City
{
public virtual string Name { get; set; }
}
今、私は避けられない「オブジェクトがnullです」という例外を次のように処理しています...
public void DoThing()
{
new Address address();
address.Street = _street;
address.City = new City();
address.City.Name = _cityName;
DoOtherThing(address);
}
小規模なプロジェクトではこれで問題ありませんでしたが、大きなプロジェクトになると非常に面倒です。(私のオブジェクトに別のオブジェクトを追加します。すべてを見つけたと仮定すると、100 か所以上でこれを行う必要があることを意味する可能性があります)
IoCの前は、これは次のようなことを行うことで簡単に処理されました...
public class Address
{
private string street;
private City city;
public Address()
{
street = string.Empty;
City = new City();
}
public string Street
{
get { return street; }
set { street = value; }
}
}
私が理解しようとしているのは (おそらく、私が読んだガイドでこの詳細を完全に見逃しているだけです)、IoC で同等のことをエレガントな方法で行うにはどうすればよいでしょうか?
私がフォローしている構造は、Tony Sneed がhttp://www.develop.com/onionarchitectureで提示したものに基づいています。
唯一の注目すべき違いは、サービス レベルでまだ何も持っていないことです。これは、私たちのもののほとんどが、データベースからの読み取り/データベースへの書き込みに過ぎず、間に顕著な操作がほとんどないためです。(サービスレベルに入れる必要があるものがあるでしょうが、まだ何もヒットしていません。そのレベルとリポジトリに属するものが正確にはまだ完全には明らかではありません。)
参考になる詳細があれば教えてください (IoC は正常に動作しています。保守性を適切に保つために、上記の問題に取り組む必要があるだけです)。