我有这样的功能
public static void serialize<T>(T serializeObject){
//this is the trouble
SerializableEntity<T> entity = new SerializableEntity<T>(serializeObject);
}我如何在仿制药内部使用仿制药呢?如何做到这一点?
更新
在这里,编译器错误:

发布于 2013-05-24 07:14:40
您所拥有的代码本身没有什么问题:它编译得很好:
class SerializableEntity<T> {
public SerializableEntity(T obj) { }
}
static class P {
public static void serialize<T>(T serializeObject) {
//this is fine...
SerializableEntity<T> entity =
new SerializableEntity<T>(serializeObject);
}
static void Main() { /*...*/ }
}所以真正的问题是:编译器是怎么说的?最明显的是,如果上面写的是:
类型'T‘必须是引用类型,才能将其用作泛型类型或方法'
SerializableEntity<T>’中的参数'T‘
这是一种“约束”冲突;如果这是您所看到的,您需要向serialize<T>添加约束,以向编译器证明这些约束总是满足的。例如,如果SerializableEntity<T>声明为:
class SerializableEntity<T> where T : class
{...}然后,您只需将该约束传递给方法:
public static void serialize<T>(T serializeObject) where T : class
{...}请注意,其他约束是可能的,包括:
: class: struct: SomeBaseType: ISomeInterface: new()发布于 2013-05-24 07:17:38
在方法和类中,对T可能有不同的约束。
请记住,如果全班学生说:
where T : class, IDisposable 那么该方法必须至少具有相同的位置。
https://stackoverflow.com/questions/16729148
复制相似问题