bool XamlResourceIdOnly { get; set; }
internal IEnumerable<CodeMemberField> NamedFields { get; set; }
internal CodeTypeReference BaseType { get; set; }
+ string classModifier { get; set; }
public XamlGenerator(
string xamlFile,
NamedFields = GetCodeMemberFields(root, nsmgr);
var typeArguments = GetAttributeValue(root, "TypeArguments", XamlParser.X2006Uri, XamlParser.X2009Uri);
+ classModifier = GetAttributeValue(root, "ClassModifier", XamlParser.X2006Uri, XamlParser.X2009Uri);
var xmlType = new XmlType(root.NamespaceURI, root.LocalName, typeArguments != null ? TypeArgumentsParser.ParseExpression(typeArguments, nsmgr, null) : null);
BaseType = GetType(xmlType, root.GetNamespaceOfPrefix);
var declType = new CodeTypeDeclaration(RootType) {
IsPartial = true,
+ TypeAttributes = GetTypeAttributes(classModifier),
CustomAttributes = {
new CodeAttributeDeclaration(new CodeTypeReference(XamlCTask.xamlNameSpace + ".XamlFilePathAttribute"),
new CodeAttributeArgument(new CodePrimitiveExpression(XamlFile))),
declType.Members.Add(exitXamlComp);
}
+ static System.Reflection.TypeAttributes GetTypeAttributes(string classModifier)
+ {
+ var access = System.Reflection.TypeAttributes.Public;
+ if (classModifier != null)
+ {
+ switch (classModifier.ToLowerInvariant())
+ {
+ default:
+ case "public":
+ access = System.Reflection.TypeAttributes.Public;
+ break;
+ case "internal":
+ case "notpublic": //WPF syntax
+ access = System.Reflection.TypeAttributes.NotPublic;
+ break;
+ }
+ }
+ return access;
+ }
+
static IEnumerable<CodeMemberField> GetCodeMemberFields(XmlNode root, XmlNamespaceManager nsmgr)
{
var xPrefix = nsmgr.LookupPrefix(XamlParser.X2006Uri) ?? nsmgr.LookupPrefix(XamlParser.X2009Uri);