Пример #1
0
        public void DefineProvider(QualifiedName name,
                                   Type providerType,
                                   MethodInfo factoryMethod,
                                   object metadata = null)
        {
            if (providerType == null)
            {
                throw new ArgumentNullException("providerType");
            }
            if (factoryMethod == null)
            {
                throw new ArgumentNullException("factoryMethod");
            }
            if (!factoryMethod.IsStatic ||
                !providerType.IsAssignableFrom(factoryMethod.ReturnType))
            {
                throw RuntimeFailure.InvalidProviderFieldOrMethod("factoryMethod");
            }

            var qn           = GetName(name, factoryMethod.DeclaringType, factoryMethod.Name);
            var methodResult = new ProviderMethod(factoryMethod,
                                                  providerType,
                                                  qn);

            methodResult.ProviderMetadata        = ProviderMetadataWrapper.Create(metadata);
            methodResult.ProviderMetadata.Source = methodResult;
            AppendResult(methodResult);
        }