C#.NET类成员类型基于另一个成员类型

时间:2013-12-23 22:08:38

标签: c# .net wcf class

有一个类定义一个包含2个成员的几何体,“type”和“coordinates”

[DataContract]
public class geometry
{
    [DataMember]
    public string type = "LineString";

    [DataMember]
    public float coordinates;

}

有没有一种方法可以根据“类型”的值动态定义坐标成员类型?例如,如果“type”是“MultiLineString”,坐标类型将是字符串?

1 个答案:

答案 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