0
respostas

uso de atributos em parâmetros. C# / .NET

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.