/// <summary>
        /// The extension point and extension builder type must have a public parameter-less constructor.
        /// </summary>
        internal static bool HasPublicParameterLessConstructor(this BaseExtensionPointResolution epOreb)
        {
            var ctors = epOreb.Type.GetConstructors();

            if (ctors == null)
            {
                return(false);
            }
            foreach (var ctor in ctors)
            {
                if (!ctor.IsPublic)
                {
                    continue;
                }
                var parameters = ctor.GetParameters();
                if (parameters == null || parameters.Count == 1)
                {
                    return(true);
                }
            }
            return(false);
            //var parameters = ctors[0].GetParameters();
            //return parameters == null;
            //return ctors != null && ctors.Count == 1;
        }
Example #2
0
        // rule: referenced extension builder must be a child of itself.
        protected static ExtensionBuilderResolution TryFindReferencedExtensionBuilder(BaseExtensionPointResolution parent, string id)
        {
            var real = parent as ExtensionBuilderResolution;

            while (real != null)
            {
                if (real.Name == id)
                {
                    break;
                }
                real = real.Parent as ExtensionBuilderResolution;
            }
            return(real);
        }
 internal override bool TryParse(ResolutionResult resolutionResult, AddinResolution addin, BaseExtensionPointResolution parent,
                                 out ExtensionBuilderResolution result)
 {
     result = new NewOrUpdatedReferencedExtensionBuilderResolution(addin)
     {
         Name = Name,
         ExtensionPointName = ExtensionPointName,
         ParentPath         = ParentPath,
         Parent             = parent
     };
     if (_children != null)
     {
         foreach (var child in _children)
         {
             ExtensionBuilderResolution eb;
             if (!child.TryParse(resolutionResult, addin, result, out eb))
             {
                 return(false);
             }
             eb.ParentPath             = Path; // The parent path of an extension builder
             eb.ParentIsExtensionPoint = false;
             result.AddChild(eb);
         }
     }
     return(true);
 }
 internal abstract bool TryParse(ResolutionResult resolutionResult, AddinResolution addin, BaseExtensionPointResolution parent,
                                 out ExtensionBuilderResolution result);
 /// <summary>
 /// The extension builder or extension point must be declared in the addin that defined its type.
 /// </summary>
 internal static bool DeclaresInSameAddin(this BaseExtensionPointResolution epOreb)
 {
     return(ReferenceEquals(epOreb.DeclaringAddin, epOreb.Type.Assembly.DeclaringAddin));
 }
 internal override bool TryParse(IMessageDialog dialog, AddinResolution addin, BaseExtensionPointResolution parent,
                                 out ExtensionBuilderResolution result)
 {
     result = new NewReferencedExtensionBuilderResolution(addin)
     {
         Id = Id,
         ExtensionPointId = ExtensionPointId,
         ParentPath       = ParentPath,
         Parent           = parent
     };
     if (_children != null)
     {
         foreach (var child in _children)
         {
             ExtensionBuilderResolution eb;
             if (!child.TryParse(dialog, addin, result, out eb))
             {
                 return(false);
             }
             eb.ParentPath             = Path; // The parent path of an extension builder
             eb.ParentIsExtensionPoint = false;
             result.AddChild(eb);
         }
     }
     return(true);
 }
 internal abstract bool TryParse(IMessageDialog dialog, AddinResolution addin, BaseExtensionPointResolution parent,
                                 out ExtensionBuilderResolution result);