private static void ParseAssemblySymbols(ParseResult disco, ISymbol symbol) { foreach (var attrData in symbol.GetAttributes()) { var attrClassSymbol = attrData.AttributeClass; // handle errors if (attrClassSymbol is IErrorTypeSymbol) { continue; } if (attrData.AttributeConstructor == null) { continue; } var attrClassName = SymbolDisplay.ToDisplayString(attrClassSymbol); switch (attrClassName) { case "Umbraco.ModelsBuilder.IgnoreContentTypeAttribute": var contentAliasToIgnore = (string)attrData.ConstructorArguments[0].Value; // see notes in IgnoreContentTypeAttribute //var ignoreContent = (bool)attrData.ConstructorArguments[1].Value; //var ignoreMixin = (bool)attrData.ConstructorArguments[1].Value; //var ignoreMixinProperties = (bool)attrData.ConstructorArguments[1].Value; disco.SetIgnoredContent(contentAliasToIgnore /*, ignoreContent, ignoreMixin, ignoreMixinProperties*/); break; case "Umbraco.ModelsBuilder.RenameContentTypeAttribute": var contentAliasToRename = (string)attrData.ConstructorArguments[0].Value; var contentRenamed = (string)attrData.ConstructorArguments[1].Value; disco.SetRenamedContent(contentAliasToRename, contentRenamed, false); break; case "Umbraco.ModelsBuilder.ModelsBaseClassAttribute": var modelsBaseClass = (INamedTypeSymbol)attrData.ConstructorArguments[0].Value; if (modelsBaseClass is IErrorTypeSymbol) { throw new Exception($"Invalid base class type \"{modelsBaseClass.Name}\"."); } disco.SetModelsBaseClassName(SymbolDisplay.ToDisplayString(modelsBaseClass)); break; case "Umbraco.ModelsBuilder.ModelsNamespaceAttribute": var modelsNamespace = (string)attrData.ConstructorArguments[0].Value; disco.SetModelsNamespace(modelsNamespace); break; case "Umbraco.ModelsBuilder.ModelsUsingAttribute": var usingNamespace = (string)attrData.ConstructorArguments[0].Value; disco.SetUsingNamespace(usingNamespace); break; } } }
private static void ParseClassSymbols(ParseResult disco, ISymbol symbol) { foreach (var attrData in symbol.GetAttributes()) { var attrClassSymbol = attrData.AttributeClass; // handle errors if (attrClassSymbol is IErrorTypeSymbol) { continue; } if (attrData.AttributeConstructor == null) { continue; } var attrClassName = SymbolDisplay.ToDisplayString(attrClassSymbol); switch (attrClassName) { case "Umbraco.ModelsBuilder.IgnorePropertyTypeAttribute": var propertyAliasToIgnore = (string)attrData.ConstructorArguments[0].Value; disco.SetIgnoredProperty(symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/, propertyAliasToIgnore); break; case "Umbraco.ModelsBuilder.RenamePropertyTypeAttribute": var propertyAliasToRename = (string)attrData.ConstructorArguments[0].Value; var propertyRenamed = (string)attrData.ConstructorArguments[1].Value; disco.SetRenamedProperty(symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/, propertyAliasToRename, propertyRenamed); break; // that one causes all sorts of issues with references to Umbraco.Core in Roslyn //case "Umbraco.Core.Models.PublishedContent.PublishedContentModelAttribute": // var contentAliasToRename = (string)attrData.ConstructorArguments[0].Value; // disco.SetRenamedContent(contentAliasToRename, symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/); // break; case "Umbraco.ModelsBuilder.ImplementContentTypeAttribute": var contentAliasToRename = (string)attrData.ConstructorArguments[0].Value; disco.SetRenamedContent(contentAliasToRename, symbol.Name, true /*SymbolDisplay.ToDisplayString(symbol)*/); break; } } }
private static void ParseAssemblySymbols(ParseResult disco, ISymbol symbol) { foreach (var attrData in symbol.GetAttributes()) { var attrClassSymbol = attrData.AttributeClass; // handle errors if (attrClassSymbol is IErrorTypeSymbol) continue; if (attrData.AttributeConstructor == null) continue; var attrClassName = SymbolDisplay.ToDisplayString(attrClassSymbol); switch (attrClassName) { case "Umbraco.ModelsBuilder.IgnoreContentTypeAttribute": var contentAliasToIgnore = (string)attrData.ConstructorArguments[0].Value; // see notes in IgnoreContentTypeAttribute //var ignoreContent = (bool)attrData.ConstructorArguments[1].Value; //var ignoreMixin = (bool)attrData.ConstructorArguments[1].Value; //var ignoreMixinProperties = (bool)attrData.ConstructorArguments[1].Value; disco.SetIgnoredContent(contentAliasToIgnore /*, ignoreContent, ignoreMixin, ignoreMixinProperties*/); break; case "Umbraco.ModelsBuilder.RenameContentTypeAttribute": var contentAliasToRename = (string) attrData.ConstructorArguments[0].Value; var contentRenamed = (string)attrData.ConstructorArguments[1].Value; disco.SetRenamedContent(contentAliasToRename, contentRenamed, false); break; case "Umbraco.ModelsBuilder.ModelsBaseClassAttribute": var modelsBaseClass = (INamedTypeSymbol) attrData.ConstructorArguments[0].Value; if (modelsBaseClass is IErrorTypeSymbol) throw new Exception(string.Format("Invalid base class type \"{0}\".", modelsBaseClass.Name)); disco.SetModelsBaseClassName(SymbolDisplay.ToDisplayString(modelsBaseClass)); break; case "Umbraco.ModelsBuilder.ModelsNamespaceAttribute": var modelsNamespace= (string) attrData.ConstructorArguments[0].Value; disco.SetModelsNamespace(modelsNamespace); break; case "Umbraco.ModelsBuilder.ModelsUsingAttribute": var usingNamespace = (string)attrData.ConstructorArguments[0].Value; disco.SetUsingNamespace(usingNamespace); break; } } }
private static void ParseClassSymbols(ParseResult disco, ISymbol symbol) { foreach (var attrData in symbol.GetAttributes()) { var attrClassSymbol = attrData.AttributeClass; // handle errors if (attrClassSymbol is IErrorTypeSymbol) continue; if (attrData.AttributeConstructor == null) continue; var attrClassName = SymbolDisplay.ToDisplayString(attrClassSymbol); switch (attrClassName) { case "Umbraco.ModelsBuilder.IgnorePropertyTypeAttribute": var propertyAliasToIgnore = (string)attrData.ConstructorArguments[0].Value; disco.SetIgnoredProperty(symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/, propertyAliasToIgnore); break; case "Umbraco.ModelsBuilder.RenamePropertyTypeAttribute": var propertyAliasToRename = (string)attrData.ConstructorArguments[0].Value; var propertyRenamed = (string)attrData.ConstructorArguments[1].Value; disco.SetRenamedProperty(symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/, propertyAliasToRename, propertyRenamed); break; // that one causes all sorts of issues with references to Umbraco.Core in Roslyn //case "Umbraco.Core.Models.PublishedContent.PublishedContentModelAttribute": // var contentAliasToRename = (string)attrData.ConstructorArguments[0].Value; // disco.SetRenamedContent(contentAliasToRename, symbol.Name /*SymbolDisplay.ToDisplayString(symbol)*/); // break; case "Umbraco.ModelsBuilder.ImplementContentTypeAttribute": var contentAliasToRename = (string)attrData.ConstructorArguments[0].Value; disco.SetRenamedContent(contentAliasToRename, symbol.Name, true /*SymbolDisplay.ToDisplayString(symbol)*/); break; } } }