我对 T 存在以下问题,并且可以使用通用方法将其限制为例如引用类型(其中 T :类)。所以我得到了以下代码:
public void mySave<T>(string filename, T obj)
{
Session s = connect(filename);
s.Save(obj);
}
与
public Document Save<TEntity>(TEntity entity) where TEntity : class;
无法声明 mySave where T : class
因为我是从接口(interface)获取它的。无论如何,我需要解决 CS0452(类型"typename"必须是引用类型,才能将其用作泛型类型或方法“泛型标识符”中的参数“参数名称”)
对此有什么想法吗?
最佳答案
如果某些泛型参数有一些约束,则用作参数的任何其他泛型参数必须至少提供相同的类型保证。
由于泛型是一个编译时功能,想象一下 Save<TEntity>
需要TEntity
作为引用类型,您可以给出一个可能是也可能不是值类型的参数。这将违背泛型的目的。
您最好的选择是将整个通用约束(即 T : class
)也添加到界面中。
关于c# - 强制 T 作为代码中的引用类型 [CS0452 错误],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983025/