/// <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)); } }
/// <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()); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }