C# 如何声明匿名类的属性

C# 如何声明匿名类的属性,c#,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

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

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; }
} 
}

但是内部类必须是property(have get/set)才能正确地进行序列化/反序列化。

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

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


通过使用
dynamic
,您可以避免创建反序列化类,但实际上,请继续使用您现在使用的代码。如果不使用
dynamic

的话,您的代码将不那么容易出错。您的第一个块中的代码是正常的,应该是要使用的代码。它没有问题,所以我不确定你想解决什么问题

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


通过使用
dynamic
,您可以避免创建反序列化类,但实际上,请继续使用您现在使用的代码。如果不使用
dynamic

您的代码将不太容易出错。您对Inner2的定义只定义了一个类,还需要一个属性:

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

    public Inner2 Inner { get; set; }

}
但正如您所见,这只会更改Inner2的全名,
它现在被称为
public class.OuterNew.Inner2


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

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

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

    public Inner2 Inner { get; set; }

}
但正如您所见,这只会更改Inner2的全名,
它现在被称为
public class.OuterNew.Inner2


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

什么叫“异常类”?你把匿名类和嵌套类混淆了吗?你把“异常类”叫什么?你把匿名类和嵌套类混淆了吗?主要的问题是我不想声明超过100个只用于序列化的公共类。然后你应该看看是否可以简化数据模型,从而减少使用的类。例如,你能使用字典吗?主要问题是我不想声明超过100个只用于序列化的公共类。然后你应该看看你是否能简化数据模型,从而减少使用的类的数量。例如,你能用字典吗?