2011-04-01 95 views
0

我遇到了基于通过序列化另一个C#类生成的XML创建* .cs(C#类)的问题。 XSD.EXE抛出以下错误:XSD不能从基于继承类的XML创建类

- A column named 'Conditions' already belongs to this DataTable: cannot set a 
    nested table name to the same name. 

我的过程是这样的:

  1. 写一些C#代码(下面的例子)
  2. 序列化为XML使用XSD.EXE到
  3. 创建* .cs反序列化为新* .cs
  4. (用于装运)等

这是序列化到XML的类(1点)看起来是这样的:

public class A 
{ 
    public A(){} 
    private List<string> _cond = new List<String>(); 
    public List<string> Conditions 
    { 
     get{ return _cond; } 
     set{ _cond = value } 
    } 
} 

public class B:A 
{ 
} 
public class C:A 
{ 
} 

public class Data 
{ 
    B b = new B(); 
    C c = new C(); 
    /* ... ADD SOME DATA etc ... */ 
} 

// After that I serialize to XML the "Data" class object 

任何人都可以提出解决办法吗?!这显然是由条件属性造成的。

+0

无用的论坛... – condproblem 2011-04-01 10:51:11

+0

“无用的论坛... - condproblem”我们应该从这个评论中做出什么?这有点解释了为什么没有人在我面前回答。 – 2011-04-01 13:08:41

回答

0

您可以更改xsd.exe创建输出的方式,在您的情况下,使用/ c(lasses)开关会很有意义。然后,它不会创建数据集,而是创建“普通”类。

还有LinqToXsd,它有一个相当不错的代码生成器。