有一个类定义一个包含2个成员的几何体,“type”和“coordinates”
[DataContract]
public class geometry
{
[DataMember]
public string type = "LineString";
[DataMember]
public float coordinates;
}
有没有一种方法可以根据“类型”的值动态定义坐标成员类型?例如,如果“type”是“MultiLineString”,坐标类型将是字符串?
答案 0 :(得分:2)
不,那是不可能的。你可以得到的最接近的是定义一个像这样的泛型类:
[DataContract]
public class geometry<T> where T : struct
{
[DataMember]
public T coordinates;
}
然后像这样使用它:
var geom = new geometry<float>();
geom.coordinates = 1.0f;
如果你真的想让那里的类型成员,比如说,为了序列化,你可以使用这样的东西:
[DataContract]
public class geometry<T> where T : struct
{
[DataMember]
public readonly string type = typeof(T).Name;
[DataMember]
public T coordinates;
}
var geom = new geometry<float>();
Console.WriteLine(geom.type); // Single