我有这样的功能
public static void serialize<T>(T serializeObject){
//this is the trouble
SerializableEntity<T> entity = new SerializableEntity<T>(serializeObject);
}
Run Code Online (Sandbox Code Playgroud)
如何在泛型中使用泛型?怎么做到这一点?
UPDATE
这里编译错误:

你拥有的代码本身没有任何错误:编译好:
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() { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
所以真正的问题是:编译器说什么?最明显的一个是如果它说:
类型'T'必须是引用类型才能在泛型类型或方法'
SerializableEntity<T>'中用作参数'T '
这是一种"约束"违规; 如果这是您所看到的,则需要添加约束以serialize<T>向编译器证明总是满足约束.例如,if SerializableEntity<T>声明为:
class SerializableEntity<T> where T : class
{...}
Run Code Online (Sandbox Code Playgroud)
然后你只需将该约束转移到方法:
public static void serialize<T>(T serializeObject) where T : class
{...}
Run Code Online (Sandbox Code Playgroud)
请注意,其他约束是可能的,包括:
: class: struct: SomeBaseType: ISomeInterface: new()| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |