c#泛型类型和实类型关联
本文关键字:类型 关联 泛型类型 | 更新日期: 2023-09-27 18:26:49
我正在使用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;
这整件事有时无法编译,或者在运行时无法工作。我不知道应该在类属性上声明什么类型的Value,以及如何将其数据获取到实际变量中。
非常感谢你的任何想法或建议。
Rds
您应该使用一个对象来保存数据,使用一个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;
}