0

我正在使用 tcp/ip 构建通信系统。我正在使用 .NET、C# 和 VS2012。

这些系统在它们之间交换元数据。基本消息包含元数据名称及其值(数据本身)。一个系统不知道其他系统数据类型。

该消息具有以下结构:FromNode、ToNode、MetadataName、MetadataType、MetadataSizeInBytes、MetadataValue。所有消息都是带有分隔字段的纯字节[](未序列化,因为某些系统可以是 Unix 风格的)。

收到该消息时,我想根据元数据的类型将元数据与真实变量相关联。所以我建立了以下类:

公共类 RealMetadata

{
         public string Type { get; set; }
         public Type   Value { get; set; } <<--- I´ve tried var and object, with no success.
}

稍后在代码中我想访问元数据的真正价值:

if (Type == "INTEGER")
      int RealValue = (int) Value;
if (Type == "STRING")
      string RealValue;
      Buffer.Blockcopy (RealValue, 0, Value, 0, MetadataSizeInValues * sizeof (char));
if (Type == "FLOAT")
      float RealValue = (float) Value;

整个事情有时无法编译或在运行时不起作用。我不确切知道应该在类属性上声明什么类型的值,以及如何将其数据获取到真实变量。

非常感谢您的任何想法或建议。

路数

4

1 回答 1

1

您应该使用一个对象来保存数据,并使用一个 Type 对象来保存所存储数据的类型,如下所示:

    public Type Type { get; set; }
    public Object Value { get; set; }


        if (Type == typeof (int))
        {
            int realValue = (int) Value;
        }
        if (Type == typeof(string))
        {
            string RealValue;
            Buffer.Blockcopy(RealValue, 0, Value, 0, MetadataSizeInValues*sizeof (char));
        }
        if (Type == typeof(float))
        {
            float RealValue = (float) Value;
        }
于 2013-08-08T12:55:59.857 回答