我无法弄清楚如何正确实施DataToBytes
. 有一个基本抽象类Data<T>
和两个后代:DataSting
(from Data<string>
) 和DataInt
(from Data<int>
)。
我需要一个接受任何继承自Data
. 编码:
using System;
using System.Collections.Generic;
using System.Text;
public class Program
{
public abstract class Data<T>
{
public T Value {get; set;}
public abstract byte[] ToBytes();
}
public sealed class DataInt : Data<int>
{
public override byte[] ToBytes()
{
return new byte[0]; // представим, что здесь какае-то логика
}
}
public sealed class DataString : Data<string>
{
public override byte[] ToBytes()
{
return new byte[0]; // представим, что здесь тоже какае-то логика
}
}
public static byte[] DataToBytes<T>(params Data<T>[] data)
{
var bytes = new List<byte>();
foreach (var dataObject in data)
bytes.AddRange(dataObject.ToBytes());
return bytes.ToArray();
}
public static void Main()
{
var intData = new DataInt() { Value = 1 };
var stringData = new DataString() { Value = "abc" };
var bytes = DataToBytes(intData, stringData); // ошибка компиляции
}
}
我想你可以添加一个接口
是的,顺便说一下,
MemoryStream
它在这里工作得比List
.