的实例我试图做一个genric代码来序列化和反序列化任何实现特定接口的对象。问题是我需要在调用.Deserialize()之前创建对象的实例,因为您无法在界面中使用静态函数。现在我的问题是我如何做一个T的实例?还是有更好的方法来实现我的目标?c#T
public static class Serializer { public static byte[] Serialize<T>(T Obj) where T : Data; public static T Deserialize<T>(byte[] Data) where T : Data { //Here I need to something like: new T().Deserialize(Data); } } public interface Data { public byte[] Serialize<T>(T obj); public T Deserialize<T>(byte[] Data);
}
class Program
{
static void Main(string[] args)
{
Serializer.Deserialize<Dummy>(new byte[20]);
}
}
class Dummy : Data
{
}
事实上,你需要一个(扔掉)实例表明有一些设计问题。 – 2012-04-03 12:37:30
确保所有接口名称都以大写字母“I”开头。像'IData'一样,而不仅仅是'Data'。 – ja72 2012-04-03 12:41:57
@HenkHolterman什么是更好的设计呢?我想有一个方法可以序列化任何实现接口的类。 – Svexo 2012-04-03 12:47:58