我在这里查看了许多线程(也许我使用了错误的术语),但我正在将 Web 应用程序转换为通过 NInject 使用 IoC。我的其他 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; }
}
现在我一直在处理不可避免的“对象为空”异常,如下所示......
public void DoThing()
{
new Address address();
address.Street = _street;
address.City = new City();
address.City.Name = _cityName;
DoOtherThing(address);
}
这对于较小的项目来说很好......但是现在我们正在谈论更大的事情,它变成了一件真正的苦差事。(向我的对象添加另一个对象,这可能意味着我需要在 100 多个地方执行此操作,假设我找到了它们)
在国际奥委会之前,这很容易通过做这样的事情来处理......
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 工作正常,我只需要解决上述问题以保持合理的可维护性)