IContentManager
Orchard CMS のモジュールに、実装されたインターフェイスなどの依存関係に依存するサービス クラスがあり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
などの場合には注入を使用できません。そのため、動的に解決し、何らかの方法でインスタンスを作成する必要があります( Orchard Framework にある) を使用する必要がありました。static classes
extension method
AddressService
実際、Type を引数として取り、渡された Type のインスタンスを作成し、作成されたオブジェクトを返すメソッドが必要です。