将调用函数中的引用变量设置为 null 的通用方法

Generic method to set the reference variable in the caller function to null

我正在编写一个实用程序方法来干净地释放对 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);

我收到一个编译器错误

cannot convert from ref CommandData to ref object

将 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;
    }
}

您的问题具体是“通用方法 获取对象参数 [...]”。强调我的。

您没有通用方法。你有一个非通用方法。当你想接受一个参数时,你正在接受一个对象,其中该参数是任何类型,这是通过完成的]一个泛型方法。如果您使该方法通用,它就会起作用。