Ejemplo n.º 1
0
        public IService FindClass(IServiceList list, Type @class)
        {
            IEnumerable <Type> keyParameters = GenericParametersProvider.ProvideGenericTypes(@class);

            return(list
                   .GetServices()
                   .Where(x => x.Registration.RegistrationFlags.Has(RegistrationFlagConstants.HasGenericParameters))
                   .Where(x => x.Registration.RegistrationFlags.SelectValueOrNull <IEnumerable <Type> >(RegistrationFlagConstants.GenericParameters).Count() == keyParameters.Count())
                   .Where(x => x.Registration.RegistrationFlags.SelectValueOrNull <IEnumerable <Type> >(RegistrationFlagConstants.GenericParameters).SequenceEqual(keyParameters))
                   .FirstOrDefault());
        }
        public IServiceGenericRegistration Generate(Type type)
        {
            ServiceGenericRegistrationBuilder builder = new ServiceGenericRegistrationBuilder();

            return(builder
                   .HasGenericParameters(TypeContainsGenericParametersChecker.Check(type))
                   .SetGenericParameters(ParametersProvider.ProvideGenericTypes(type)).Build());
        }
Ejemplo n.º 3
0
        public IInterface GenerateInterface(Type type)
        {
            IInterface @interface = new InterfaceBuilder()
                                    .AddType(type)
                                    .AddGenericParameters(GenericParametersProvider.ProvideGenericTypes(type))
                                    .HasGenericArguments(TypeContainsGenericParametersChecker.Check(type))
                                    .Build();

            return(@interface);
        }
Ejemplo n.º 4
0
        public bool Check(Type type)
        {
            if (ContainsGenericParametersChecker.Check(type))
            {
                Type enumerable = GenericGenerator.Generate(typeof(IEnumerable <>), GenericParametersProvider.ProvideGenericTypes(type).FirstOrDefault());

                return(enumerable.IsAssignableFrom(type));
            }

            return(false);
        }
        public bool Compare(Type t1, Type t2)
        {
            bool b = t1.FullName == t2.FullName;

            if (b)
            {
                return(ArgumentsComparer.Compare(GenericParametersProvider.ProvideGenericTypes(t1), GenericParametersProvider.ProvideGenericTypes(t2)));
            }

            return(false);
        }
Ejemplo n.º 6
0
        public object GenerateEnumerable(Type enumerableType)
        {
            IEnumerable <Type> genericTypes = GenericParametersProvider.ProvideGenericTypes(enumerableType);

            Type enumerableOf = genericTypes
                                .First();

            Type list = GenericTypeGenerator.Generate(typeof(List <>), enumerableOf);

            return(Activator.CreateInstance(list));
        }