将呼叫者函数中的参考变量设置为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);

我有一个编译器错误,说

不能从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方法使用对象参数[...]。"重点是我的。

您没有通用方法。您有一种非传播方法。您正在接受对象,当要接受任何类型的参数的参数时,该参数是通过来完成的。。如果您使方法通用,它将起作用。

相关内容

最新更新