示例#1
0
        internal bool Introspect(IMessageDialog dialog)
        {
            var result = true;

            if (AddinHeader == null)
            {
                dialog.AddError("");
                result = false;
            }
            else
            {
                result &= AddinHeader.Introspect(dialog);
            }

            if (ExtensionDeclaration == null && ExtensionImplementation == null)
            {
                dialog.AddError("");
                result = false;
            }

            if (ExtensionDeclaration != null)
            {
                result &= ExtensionDeclaration.Introspect(dialog);
            }

            if (ExtensionImplementation != null)
            {
                result &= ExtensionImplementation.Introspect(dialog);
            }

            return(result);
        }
        internal override bool Introspect(INameConvention nameConvention, ResolutionResult resolutionResult)
        {
            var result = true;

            if (AddinHeader == null)
            {
                resolutionResult.AddError(
                    string.Format("The addin located at [{0}] does not define any addin properties (name, guid, etc) in the Addin node of manifest file, which is required!", ManifestFile.Directory));
                result = false;
            }
            else
            {
                result &= AddinHeader.Introspect(ManifestFile.Directory, resolutionResult);
            }
            if (!result)
            {
                return(false);
            }

            if (AddinActivator != null)
            {
                result &= AddinActivator.Introspect(resolutionResult);
            }

            if (ExtensionSchema == null && Extensions == null)
            {
                resolutionResult.AddError(string.Format(
                                              "A valid addin manifest file must contain either an extension schema node, or an extension node, or both, while the addin [{0}] located at [{1}] does not provide any of them!", AddinHeader.Name, ManifestFile.Directory));
                result = false;
            }

            if (ExtensionSchema != null)
            {
                result &= ExtensionSchema.Introspect(nameConvention, resolutionResult);
            }

            if (Extensions != null)
            {
                result &= Extensions.Introspect(resolutionResult);
            }

            return(result);
        }