如何声明匿名类

时间:2017-07-11 11:26:41

标签: c#

在我的应用程序中,我必须序列化/反序列化一些数据。现在我使用这样的代码:

public class Outer
{
  public Inner Inner { get; set; }
}

public class Inner
{
  public string InnerProperty { get; set; }
}

我怎样才能避免宣布内部阶级?我需要这样的东西:

public class OuterNew
{
public class Inner2
    {
    public string InnerProperty { get; set; }
} 
}

但内部类必须是属性(已获取/设置)才能正确使用序列化/反序列化。

2 个答案:

答案 0 :(得分:1)

第一个块中的代码是可以的,应该是要使用的代码。它没有问题,所以我不确定你要解决什么问题。

在第二个代码块中,您仍然需要创建属性。现在你只有一个等待使用的内部类。

您可以使用dynamic绕过为反序列化创建类,但实际上,请继续使用您现在的代码。如果不使用dynamic,您的代码就不会出错。

答案 1 :(得分:1)

你对Inner2的定义只定义了一个类,你还需要一个属性:

public class OuterNew
{
    public class Inner2
    {
        public string InnerProperty { get; set; }
    } 

    public Inner2 Inner { get; set; }

}

但是你可以看到这只会改变Inner2的全名,
它现在被称为public class <namespaces>.OuterNew.Inner2

因此,您不妨使用第一个代码段,并且通常不鼓励使用嵌套的公共类型。