我在烏節CMS的一個模塊中有一個服務類,它依賴於一些依賴,如IContentManager
和它實現的IDependency
接口。 在我的控制器中,我通過注入使用它,它工作得很好。如何解決Orchard CMS中的對象?
我的服務:
public class AddressService : IAddressService
{
private readonly IContentManager _contentManager;
private readonly IOrchardServices _orchardService;
private readonly IRepository<StatePartRecord> _stateRepository;
private readonly IContentDefinitionManager _contentDefinitionManager;
public AddressService(IContentManager contentManager, IOrchardServices orchardService, IRepository<StatePartRecord> stateRepository, IContentDefinitionManager contentDefinitionManager)
{
_contentManager = contentManager;
_orchardService = orchardService;
_stateRepository = stateRepository;
_contentDefinitionManager = contentDefinitionManager;
}
...
}
public interface IAddressService : IDependency { ... }
我的問題是,在我的自定義類,它僅僅是一個簡單的類如何解決並在其中創建我的服務類的對象實例?
我簡單的類:
public class MyClass
{
public SomeMethod()
{
var addressService = // a method to resolve 'AddressService' class from IOC container
// Do somthing with 'addressService' ...
}
}
編輯我已經知道了,我們可以通過注射方式使用AddressService
,但我不能在某些情況下,如static classes
或extension method
使用注射...,因爲我需要動態地解析AddressService
並通過某種方法創建實例(我猜它會在Orchard Framework中找到),我必須使用它。
事實上,我需要一個方法,它將Type作爲參數並創建傳入的Type的實例並返回創建的對象。
是否適合您創建靜態方法,以便它將服務的結果作爲參數並返回您需要的任何對象?然後你可以在控制器中調用服務返回你的對象,將它傳遞給你的靜態擴展和vuala ...你創建了什麼樣的擴展? – Eduard 2012-08-23 09:12:39