我在 Orchard CMS 的一个模块中有一个服务类,它依赖于某些依赖项,例如IContentManager
它实现的IDependency
接口。在我的控制器中,我通过注入来使用它,并且效果很好。
我的服务:
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
or extension method
... ,因为我需要动态解析AddressService
并通过某种方法创建实例(我猜它会是在 Orchard Framework 中找到)我必须使用它。
事实上,我需要一个将 Type 作为参数并创建传递的 Type 的实例并返回创建的对象的方法。