private ConstructorDescriptor ActivatorConstructorDescriptor()
        {
            var _constructorInfos   = DescriptorType.GetConstructors();
            var _resolveConstructor = (ConstructorInfo)null;

            foreach (var _constructorInfo in _constructorInfos)
            {
                if (Attribute.IsDefined(_constructorInfo, typeof(ResolveConstructorAttribute)))
                {
                    if (_constructorInfo.IsStatic)
                    {
                        throw new ResolveResourceException(string.Format(RESOLVECONST_MUSTBE_INSTANCE, DescriptorType.FullName), DescriptorType);
                    }
                    if (_resolveConstructor != null)
                    {
                        throw new ResolveResourceException(string.Format(RESOLVECONST_ONLYONCE, DescriptorType.FullName), DescriptorType);
                    }
                    if (DescriptorType.IsAbstract)
                    {
                        throw new ResolveResourceException(string.Format(RESOLVECONST_CANNOTBE_ABSTRACT, DescriptorType.FullName), DescriptorType);
                    }

                    _resolveConstructor = _constructorInfo;
                }
            }

            // else we try to get a public and parameter-less constructor
            if (_resolveConstructor == null)
            {
                _resolveConstructor = DescriptorType.GetConstructor(BindingFlags.Public | BindingFlags.Instance, null, EMPTY_PARAMETERS, null);
                if (_resolveConstructor == null)
                {
                    _resolveConstructor = DescriptorType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, EMPTY_PARAMETERS, null);
                }
                if (_resolveConstructor == null)
                {
                    throw new ResolveResourceException(string.Format(BUILD_MUSTHAVE_DEFAULTCONST, DescriptorType.FullName), DescriptorType);
                }
            }

            var _constructor = new ConstructorDescriptor();

            _constructor.Constructor = _resolveConstructor;

            var _parameters = _resolveConstructor.GetParameters();

            if (_parameters.Length == 0)
            {
                _constructor.ConstructorDelegate  = TypeActivator.CreateConstructorDelegate(_resolveConstructor);
                _constructor.ParameterDescriptors = Enumerable.Empty <ParameterDescriptor>();
            }
            else
            {
                _constructor.ConstructorParameterDelegate = TypeActivator.CreateConstructorParametersDelegate(_resolveConstructor);
                _constructor.ParameterDescriptors         = ResolveConstructorParametersDescriptor(_parameters);
            }
            return(_constructor);
        }