1
我有一个遗留应用程序,我想修改它以使用Ninject来减少耦合。使用Ninject绑定传统类型
我有许多在数据层共享一个基本类型的类:
public abstract class BaseData { }
public class Child1Data : BaseData { }
public class Child2Data : BaseData { }
我也有一个数的使用/类别管理这些:
public abstract class BaseManager { }
public class Child1Manager : BaseManager { }
public class Child2Manager : BaseManager { }
我不得不创建一个映射到另一个的功能:
BaseManager GetManager(BaseData dataObject)
{
//Want to use Ninject to do this
if (dataObject is Child1Data)
return new Child1Manager(dataObject);
//...etc
}
我使用以下绑定创建了NinjectModule:
Bind<BaseManager>().To<Child1Manager>.Named(typeof(Child1Data).FullName);
在我GetManager()函数
然后我可以这样做:
BaseManager GetManager(BaseData dataObject)
{
return ServiceLocator.Get<BaseManager>(dataObject.GetType().FullName);
}
有没有绑定服务,以特定类型的更简单,更正确的方法是什么?
我可以修改BaseManager的子项,但不幸的是我必须保留BaseData和GetManager()函数的签名。
非常感谢您的意见和建议。这是我第一次接触Ninject和依赖注入。