Exemplo n.º 1
0
        /// <summary>
        /// Returns method's return type or in case the return type is a type of Provider,
        /// then returns the provided type.
        /// </summary>
        public static Type GetMethodReturnType(MethodInfo method)
        {
            var type         = method.ReturnType;
            var providedType = ProvidersCreator.GetProvidedType(type);

            return(providedType ?? type);
        }
Exemplo n.º 2
0
        public static ProvidersCreator GetCreator(Type type)
        {
            if (creatorCache.TryGetValue(type, out var creator))
            {
                return(creator);
            }

            var providerCreator = new ProvidersCreator();

            providerCreator.providerFields = type
                                             .GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
                                             .Where(field => ProviderBaseType.IsAssignableFrom(field.FieldType))
                                             .ToArray();

            creatorCache[type] = providerCreator;

            return(providerCreator);
        }
Exemplo n.º 3
0
 public static IDataProviderObject TypeDataProviderObject(IDataProviderObject obj, Func <Type, bool> typeFilter)
 => ProvidersCreator.GetProviderTypes(obj.GetType()).Any(typeFilter) ? obj : null;
Exemplo n.º 4
0
 public static Providers Build(object obj)
 => new Providers
 {
     providers = ProvidersCreator.GetCreator(obj.GetType()).Create(obj)
 };