编译时的Xml To Enum

时间:2012-01-17 22:35:01

标签: c# xml enums

我只是想制作一个小型的自定义单元转换库。我在XML文件中包含所有单位和转换值

<unit name="m">
   <multiply>1</multiply>
</unit>
<unit name="mm">
   <multiply>1E-3</multiply>
</unit>

并且,在编译时,我想将它们转换(可能是错误的单词)到枚举中以供其他项目使用

public enum Units{m, mm, ...};

这可能吗?有没有更好的方法来完成同样的事情?

2 个答案:

答案 0 :(得分:2)

看看T4模板。它们在Visual Studio中自动创建任何文本文件(* .cs,* .txt,* .html,* .xml,* .vb等)。 使用这样的模板,您将读取xml文件并生成包含枚举的* .cs文件。

请参阅MSDN上的Code Generation and T4 Text Templates

答案 1 :(得分:1)

对于这种特殊情况,正常C#代码可能会更好,因为单位数量相对较小。当你弄乱类型时,你将获得IntelliSence来编辑值并清除编译时错误。调试多个转换层(XML - &gt; CS - >一些内部结构)很有意思,并为您提供有用的见解,但除非这个项目纯粹用于娱乐/学习,否则效率不高。另一个好处是让其他人更容易理解代码。

请注意,对于与基本单元具有非线性差异的单元,您的XML可能看起来不太复杂 - 易于使用代码表达,实现一次性XML数据更有趣。