클래스가 있는데 직렬 포트 통신을하고 있습니다. 클래스는 byte[]
, char[]
, string
유형으로 초기화해야합니다.반 제네릭 클래스 - "T"에 "Length"에 대한 정의가 없습니다.
클래스는 또한 발신 데이터 및하여 SerialPort에 데이터를 기록 할 때
class SerialServices<T>
{
//...
Queue<T> requestDataQueue;
Queue<T> responseDataQueue;
//...
}
문제점 occures 들어오는 데이터
를 저장하는 큐를 제공public override Task SendData()
{
//...
T requestData = requestDataQueue.Dequeue();
if (typeof(T) == typeof(string))
{
this.sp.Write(requestData as string);
}
else
{
this.sp.Write(requestData, 0, requestData.Length);
}
//...
}
requestData.Length
오류 :
"T" does not contain a definition for "Length".
I 해달라고도, 여기에 올바른 방법이 클래스는 일반적인 만드는 알고 ... 정말 일반적인 밤은 때문에
그러나 필자는 세 가지 "오버로드"를 만들기 피하려고 string
, byte[]
, char[]
에 대한 클래스입니다.
여기로가는 길은 무엇입니까?
제네릭의 남용과 같으며 실제로 수행해야 할 작업은'byte [] '를 사용하고 다른 데이터 유형에 어댑터/매퍼를 작성하는 것입니다. –
'문자열'이 아니라면 무엇입니까? – SeM
다음은'byte []'또는'char []'중 하나입니다 –