我正在编写一种实用方法来清洁对com对象的引用。
public class ComUtils {
public static void ReleaseObj(ref object comObj)
{
if (comObj != null)
{
Marshal.FinalReleaseComObject(comObj);
comObj = null;
}
}
}
我想这样称呼这种方法:
CommandData cmdData;
//cmdData = Acquire a CommandData object
ComUtils.ReleaseObj(ref cmdData);
我有一个编译器错误,说
不能从ref commanddata转换为参考对象
将Commanddata施加到对象中将失去通用方法的目的,该方法必须在释放后将参考变量设置为null。
有解决方案吗?我正在使用VS 2005,.NET 2.0
谢谢。
您正在寻找仿制药:
public static void ReleaseObj<T>(ref T comObj) where T : class
{
if (comObj != null)
{
Marshal.FinalReleaseComObject(comObj);
comObj = null;
}
}
您的问题专门问:" generic方法使用对象参数[...]。"重点是我的。
您没有通用方法。您有一种非传播方法。您正在接受对象,当要接受任何类型的参数的参数时,该参数是通过来完成的。。如果您使方法通用,它将起作用。