0

我正在从动态更新的 json 中检索数据。它有时包含一个 X 类型的对象,有时还包含一个 X 类型的对象数组。我需要一个可以在上述任何情况下工作的父类 Y。并且对象名称: x 保持不变。

class Y
{
    public X x { get; set; }
    public X[] x { get; set; }
}
class X
{
    public int a { get; set; }
}

这显示了一个错误:类型 Y 已经包含 x 的定义
有没有可能的方法来做到这一点?

4

3 回答 3

0

C# 规范说,一个类型的成员必须有一个唯一的名称(我假设这是为了防止不明确的成员引用)。请参阅http://msdn.microsoft.com/en-us/library/aa691137(v=vs.71).aspx,具体来说:

因为命名空间或类型的每个成员都必须有一个唯一的名称,所以命名空间或类型的完全限定名称始终是唯一的。

于 2012-04-08T16:30:12.933 回答
0

您收到错误的原因是 C# 不允许具有相同名称的两种类型的变量。

你不能声明

SomeMethod()
{
    int x = 0;
    string x = "something";
}

如果我是你,我可能会做以下事情。

 class Y
{
   public List<X> listOfX{get; set;}
}
class X
{
    public int a { get; set; }
}

你可以有一个清单。如果只有一个元素,则存在大小为 1 的元素的列表。

于 2012-04-08T16:18:34.663 回答
0

如果您需要名为 x 的属性一次返回 X 类型的单个值,而另一次返回 X 数组,则可以使用 dynamic 关键字。

class Y
{
    public dynamic x { get { return IfMonday() ? new X() : new X[100]; set; }
}
于 2012-04-08T16:31:52.853 回答