示例#1
0
        /// <summary>
        /// Pré-configura os exports do tipo informado.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="contractName"></param>
        public void PreConfigure(Type type, string contractName)
        {
            PreConfigureResult result = null;

            PreConfigure(type, contractName, out result);
            if (!result.Success)
            {
                throw new PreConfigureException(ResourceMessageFormatter.Create(() => Properties.Resources.ExportConfigurator_NotFoundExportForType, result.Types[0].FullName));
            }
        }
示例#2
0
        /// <summary>
        /// Pré-configura os exports do tipo informado.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="contractName"></param>
        /// <param name="result"></param>
        public void PreConfigure(Type type, string contractName, out PreConfigureResult result)
        {
            var notFoundTypes = new List <Type>();
            var types         = new List <Type>()
            {
                type
            };

            for (var i = 0; i < types.Count; i++)
            {
                IEnumerable <System.ComponentModel.Composition.Primitives.ExportDefinition> definitions = null;
                if (ExportProviderExtensions.TryGetExportDefintions(_exportProvider, types[i], contractName, out definitions))
                {
                    foreach (var definition in definitions)
                    {
                        var providerDefintion = definition as ProviderExportDefinition;
                        if (providerDefintion != null)
                        {
                            var member = providerDefintion.Member;
                            if (member is System.Reflection.ConstructorInfo)
                            {
                                var ci = (System.Reflection.ConstructorInfo)member;
                                foreach (var parameter in ci.GetParameters())
                                {
                                    if (!types.Contains(parameter.ParameterType))
                                    {
                                        types.Add(parameter.ParameterType);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    notFoundTypes.Add(types[i]);
                }
                contractName = null;
            }
            result = new PreConfigureResult(notFoundTypes.Count == 0, notFoundTypes.ToArray());
        }
示例#3
0
 /// <summary>
 /// Pré-configura os exports do tipo informado.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="result"></param>
 public void PreConfigure <T>(out PreConfigureResult result)
 {
     PreConfigure(typeof(T), null, out result);
 }
示例#4
0
 /// <summary>
 /// Pré-configura os exports do tipo associado com o contrato informado.
 /// </summary>
 /// <typeparam name="T">Tipo que será pré configurado.</typeparam>
 /// <param name="contractName"></param>
 /// <param name="result"></param>
 public void PreConfigure <T>(string contractName, out PreConfigureResult result)
 {
     PreConfigure(typeof(T), contractName, out result);
 }
示例#5
0
 /// <summary>
 /// Pré-configura os exports do tipo informado.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="result"></param>
 public void PreConfigure <T>(out PreConfigureResult result)
 {
     result = new PreConfigureResult(true);
 }
示例#6
0
 /// <summary>
 /// Pré-configura os exports do tipo associado com o contrato informado.
 /// </summary>
 /// <typeparam name="T">Tipo que será pré configurado.</typeparam>
 /// <param name="contractName"></param>
 /// <param name="result"></param>
 public void PreConfigure <T>(string contractName, out PreConfigureResult result)
 {
     result = new PreConfigureResult(true);
 }