将调用函数中的引用变量设置为 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;
}
}
您的问题具体是“通用方法 获取对象参数 [...]”。强调我的。
您没有通用方法。你有一个非通用方法。当你想接受一个参数时,你正在接受一个对象,其中该参数是任何类型,这是通过完成的]一个泛型方法。如果您使该方法通用,它就会起作用。
我正在编写一个实用程序方法来干净地释放对 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;
}
}
您的问题具体是“通用方法 获取对象参数 [...]”。强调我的。
您没有通用方法。你有一个非通用方法。当你想接受一个参数时,你正在接受一个对象,其中该参数是任何类型,这是通过完成的]一个泛型方法。如果您使该方法通用,它就会起作用。