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