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和依賴注入。