我不确定这是否可行,甚至不是一个好的方法,但我有一个 WPF 应用程序,它使用从 xsd 文件生成的 C# 类。该类是通过在终端中使用 xsd.exe 手动生成的。我想要做的是在运行时生成此类。我希望这样做的原因是提供更新 xsd 的选项,而无需手动生成新的 c# 文件以及使用更新的 xsd 类的代码。
PS。我确实认识到这可能不是最好的主意,考虑到如果有人对 xsd 进行了太多更改,它可能会破坏依赖于该类的代码(假设这首先是可能的)。
虽然我同意 Klaus 的观点,认为这样做是明智的,但使用代码运行 xsd.exe 并不困难。像这样的事情就可以解决问题:
namepace SomeNameSpace
{
using System.Diagnostics;
public static class SomeClassName
{
public static void InvokeXsd(string[] args)
{
var command = "xsd.exe"; // Note: need path to exe
var startInfo = new ProcessStartInfo(command, args)
{
UseShellExecute = false,
CreateNoWindow = true
};
Process.Start(startInfo)?.WaitForExit();
}
}
}