我有一个类childNodeValue
可以是字符串或List<ChildAttribute>
相同的类,如果不支持相同的类,那么另一个具有相同属性的类,而循环我需要将所需的类型分配给{{1 }}。
childNodeValue
如何在运行时在我的波纹管代码中分配类型;
public class ChildAttribute
{
public int? sequence { get; set; }
public Type<T> childNodeValue { get; set; } // string or List<ChildAttribute>
public int? parentId { get; set; }
}
答案 0 :(得分:0)
在C#中,您有几个选择:
选项1和2的缺点是,每次尝试访问此属性时都必须检查实际的运行时类型,并在每次使用之前将这些值转换回适当的类型。第四种选择这是最复杂的,可能是一种过度杀伤。
第三种选择最有意义:
public class ChildAttribute
{
public int? sequence { get; set; }
public List<ChildAttribute> children { get; set; }
public string value { get; set; }
public int? parentId { get; set; }
}
即使此选项强制您每次要使用这些属性时都要检查哪个属性可用,但它并不要求您向下转换为适当的类型。