Пример #1
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="assemblies"></param>
 /// <param name="partDescriptions"></param>
 public DefinitionCatalog(IAssemblyContainer assemblies, IEnumerable <PartDescription> partDescriptions)
 {
     assemblies.Require("assemblies").NotNull();
     partDescriptions.Require("partDescriptions").NotNull();
     _assemblies       = assemblies;
     _partDescriptions = partDescriptions;
 }
		/// <summary>
		/// Construtor padrão.
		/// </summary>
		/// <param name="partDescription"></param>
		/// <param name="assemblyContainer"></param>
		public ProviderParameterImportDefinitionContainer(PartDescription partDescription, IAssemblyContainer assemblyContainer)
		{
			partDescription.Require("partDescription");
			assemblyContainer.Require("assemblyContainer");
			_partDescription = partDescription;
			_assemblyContainer = assemblyContainer;
		}
Пример #3
0
 /// <summary>
 /// Recupera o tipo associado com a instancia.
 /// </summary>
 /// <param name="assemblyContainer"></param>
 /// <returns></returns>
 private Type GetType(IAssemblyContainer assemblyContainer)
 {
     if (_type == null)
     {
         System.Reflection.Assembly assembly = null;
         if (assemblyContainer.TryGet(_typeName.AssemblyName.Name, out assembly))
         {
             _type = assembly.GetType(_typeName.FullName, true);
         }
         else
         {
             throw new InvalidOperationException(string.Format("Assembly '{0}' not found", _typeName.AssemblyName.Name));
         }
     }
     return(_type);
 }
Пример #4
0
 /// <summary>
 /// Recupera os parametros.
 /// </summary>
 /// <param name="assemblyContainer"></param>
 /// <returns></returns>
 private ImportingConstructorParameterDescription[] GetParameters(IAssemblyContainer assemblyContainer)
 {
     if (_parameters == null || _parameters.Length == 0)
     {
         var type         = GetType(assemblyContainer);
         var constructors = type.GetConstructors(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
         foreach (var ctor in constructors)
         {
             var ctorParameters = ctor.GetParameters();
             if (ctorParameters.Length > 0)
             {
                 _parameters = ctorParameters.Select(f => new ImportingConstructorParameterDescription {
                     Name         = f.Name,
                     ContractType = f.ParameterType
                 }).ToArray();
                 continue;
             }
         }
     }
     return(_parameters);
 }
Пример #5
0
        /// <summary>
        /// Recupera a instancia do construtor associado.
        /// </summary>
        /// <param name="assemblyContainer"></param>
        /// <returns></returns>
        public System.Reflection.ConstructorInfo GetConstructor(IAssemblyContainer assemblyContainer)
        {
            var type         = GetType(assemblyContainer);
            var constructors = type.GetConstructors(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            var parameters   = GetParameters(assemblyContainer) ?? new ImportingConstructorParameterDescription[0];

            foreach (var i in constructors)
            {
                var ctorParameters = i.GetParameters();
                if (ctorParameters.Length == parameters.Length)
                {
                    var equals = true;
                    for (var j = 0; equals && j < ctorParameters.Length; j++)
                    {
                        equals = ctorParameters[j].Name == parameters[j].Name && (parameters[j].ContractType == null || (parameters[j].ContractType == ctorParameters[j].ParameterType));
                    }
                    if (equals)
                    {
                        return(i);
                    }
                }
            }
            return(null);
        }
Пример #6
0
        /// <summary>
        /// Recupera os parametros do construtor.
        /// </summary>
        /// <param name="assemblyContainer"></param>
        /// <returns></returns>
        public IEnumerable <Tuple <ImportingConstructorParameterDescription, System.Reflection.ParameterInfo> > GetParameterImportDefinitions(IAssemblyContainer assemblyContainer)
        {
            var constructor = GetConstructor(assemblyContainer);

            if (constructor != null)
            {
                var parameters     = GetParameters(assemblyContainer);
                var ctorParameters = constructor.GetParameters();
                for (var i = 0; i < ctorParameters.Length; i++)
                {
                    yield return(new Tuple <ImportingConstructorParameterDescription, System.Reflection.ParameterInfo>(parameters[i], ctorParameters[i]));
                }
            }
        }
Пример #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseBusinessRuleRegistry"/> class.
 /// </summary>
 /// <param name="serviceProvider">The service provider used to get dependencies.</param>
 /// <param name="assemblyContainer">The container of all executing assemblies.</param>
 public BaseBusinessRuleRegistry(IServiceProvider serviceProvider, IAssemblyContainer assemblyContainer)
 {
     this.serviceProvider   = serviceProvider;
     this.assemblyContainer = assemblyContainer;
     this.RegisterEntries();
 }