C# 如何理解C类型?

C# 如何理解C类型?,c#,xml,code-generation,C#,Xml,Code Generation,我用python编写了一段代码,读取包含用户定义类型和用户类定义的XML数据模型,然后将其转换为C#类 例如,用户创建此XML文件: <app:list name="myList" itemType="strering"> <app:restriction combination="any"> <app:minSize>1</app:minSize> </app:restriction> <

我用python编写了一段代码,读取包含用户定义类型和用户类定义的XML数据模型,然后将其转换为C#类

例如,用户创建此XML文件:

<app:list name="myList" itemType="strering">
    <app:restriction combination="any">
            <app:minSize>1</app:minSize>
     </app:restriction>
</app:list>

1.
我的应用程序会将其转换为以下C代码:

private System.Collections.Generic.List\u myList;
public System.Collections.Generic.List myList{
获取{return\u myList;}
设置{
if(_myList==值)
返回;
如果((value.Count>=1)| | false){
_myList=值;
}
否则{
抛出新异常(“myList的插入值无效!”);
}
RaisePropertyChanged(“myList”);//用于绑定到mvvm模型
}
}

如果在XML文件中定义了strering,那么我的应用程序可以在符号表中找到它并将其传递到另一个级别,但我的问题是,如何理解用户输入的列表类型是否为.Net内置类型?

如果是代码生成,对XML进行第二次遍历,以了解是否有在第一次遍历中读取的复杂类型。代码生成器通常就是这样工作的

只要看看价值,就真的没有明确的方法来决定尝试。
我的意思是,“stering”可以是字符串或枚举。因此,您必须添加一些逻辑来决定应该生成什么。

我可以编译生成的CS代码,并尝试了解它是如何编译的,有无错误,但我想知道如何找到用户输入的类型是否正确?在第一步中,只需扫描文件中的所有类型。这就是所谓的词汇分析。完成后,再次检查该文件,然后检查无效/未知类型。第二个阶段称为语义检查。了解编译器的一般工作原理。我的程序不是编译器或解释器,它只是一个翻译程序。用户可以将数据类型定义为.Net类型名称,我的应用程序只是将xml数据模型转换为C#数据模型。在哪里定义类型?在XML或其他类似程序集中?据我所知,它看起来不像是标准的.NET类型,但我可能错了。您是否尝试过将所有内容更改为字符串?如果您想知道可以始终使用
typeof(MyObject)
MyObject.GetType().ToString()的对象的类型,那么它看起来更像是一个未命中的输入错误
private  System.Collections.Generic.List<strering> _myList;
public System.Collections.Generic.List<strering> myList {
get{ return _myList; }
set{
    if (_myList == value)
        return;
    if ((value.Count>=1) || false){
        _myList=value;
    }
    else {
        throw new Exception("Inserted value for myList is not valid!");
    }

    RaisePropertyChanged ("myList"); // for binding to mvvm model
    }
}