變量類型我解析DataField
的出較大Message
。該Message
的格式爲RecordHeader | DataFieldKey |數據字段| DataFieldKey |數據字段| DataFieldKey |數據字段| DataFieldKey |數據字段(沒有分隔符,就在那裏對效應)的DataFieldKey
塊定義下面的DataField
的長度和類型。我有一個DataField類用於繼承各種DataField派生類型的基本功能創建基於變量在C#
解析我的DataFieldKey後,我知道我需要創建的類型,並將字節[]的塊從消息複製到數據字段。
switch(fieldId)
{
case (0):
GPSData dataField = new GPSData(dataFieldContent);
break;
case (1):
DebugEvent dataField = new DebugEvent(dataFieldContent);
break;
case (2):
DigitalData dataField = new DigitalData(dataFieldContent);
break;
case (3):
Driver dataField = new Driver(dataFieldContent);
break;
//case etc
default:
Debug.WriteLine("Message {0}. Location {1} Unable to process unknown data field type ({2})", recordHeader.SequenceNumber, dfk.FieldPosition, fieldId);
break;
}
這導致了這樣的錯誤以下 無法隱式轉換類型「Namespace.TripType」到「Namespace.GPSData」
我可以看到名稱在第一種情況下定義,所有以下失敗。我不知道這裏要做什麼。我希望能夠爲DataField創建正確的類型,繼續調用其中的一個或兩個方法,然後重複沖洗下一個字段。我可以使用一些繼承技巧嗎?我是否需要將每個var dataField0命名爲dataFieldX?
switch(fieldType)
是檢查DataField.FieldId
曾嘗試以下懶硬編碼,但它只是有更多的錯誤。我已經改名爲DataField
到DataFieldBase
因爲我也有兩個接口IDataFieldBase
和IDataFieldImpl
,以確保我實現的事情隨處可見。
DataFieldBase dataField = null;
switch(fieldId)
{
case (0):
dataField = new GPSData();
dataField.Content = dataFieldContent;
(dataField as GPSData).TestArray = dataFieldContent;
break;
//etc
- 無法使用局部變量 '的dataField' 之前它宣佈
- 發生到處使用的dataField WS(3次)
- 我想
DataFieldBase dataField = null;
宣佈它
- 「Ctrack .DMT.Message.GPSData'不包含具有0個參數的構造函數
- 我實際上沒有一個無參數的構造
- 我做了一個後此錯誤走
也許你可以使用'dynamic'這種情況 – Zen
你真的應該提供一個[MCVE。 – Enigmativity