Estou criando uma classe para injeção de dependência, porém estou em dúvida sobre como pegar os atributos em parâmetros. Minha classe da implementação do serviço está assim:
[Service(typeof(IDomainValidatorService))]
public sealed class DomainValidatorService : IDomainValidatorService {
e a classe que gerencia os serviços está assim:
internal static class ServiceProvider {
private static Dictionary<Type, Object> r_services = new Dictionary<Type, Object>();
static ServiceProvider() {
CreateServices();
}
private static void CreateServices() {
foreach(TypeInfo typeInfo in Assembly.GetExecutingAssembly().DefinedTypes) {
ServiceAttribute attribute = typeInfo.GetCustomAttribute<ServiceAttribute>();
if (attribute != null) {
r_services.Add(attribute.ServiceType, Activator.CreateInstance(typeInfo.AsType()));
}
}
}
e gostaria de saber se tem uma forma de usar a injeção nas classes assim:
public static void Do([FromServiceProvider] IDomainValidatorService domainValidator) {
// ...
}
e como fazer a classe ServiceProvider devolver uma instância para o serviço.