저는 tcp/ip를 사용하여 통신 시스템을 구축하고 있습니다. .NET, C# 및 VS2012를 사용하고 있습니다.C# 일반 유형 및 실제 유형 연결
이러한 시스템은 메타 데이터를 교환합니다. 기본 메시지에는 메타 데이터 이름과 값 (데이터 자체)이 포함됩니다. 한 시스템이 다른 시스템 데이터 유형을 알지 못합니다.
메시지의 구조는 FromNode, ToNode, MetadataName, MetadataType, MetadataSizeInBytes, MetadataValue입니다. 모든 메시지는 분리 된 필드가있는 순수 바이트 []입니다 (일부 시스템은 유닉스 맛이있을 수 있기 때문에 직렬화되지 않음).
해당 메시지를받을 때 유형에 따라 실제 변수에 메타 데이터를 연결하려고합니다. 그래서 나는 다음과 같은 클래스 내장 :
공용 클래스 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의
는 예, String로서 형태를 유지 (int) 값으로 형변환하면 런타임시 오류가 발생했습니다. Object를 이미 시도했습니다. 나는 새로운 시도를 할 것이다. – Cox