tcp/ip を使用して通信システムを構築しています。.NET、C#、および VS2012 を使用しています。
これらのシステムは、それらの間でメタデータを交換します。基本メッセージには、メタデータ名とその値 (データ自体) が含まれます。1 つのシステムが他のシステムのデータ型を認識していません。
メッセージには次の構造体があります: FromNode、ToNode、MetadataName、MetadataType、MetadataSizeInBytes、MetadataValue。すべてのメッセージは、フィールドが区切られた純粋な byte[] です (一部のシステムは 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