创建COM对象的实例

时间:2013-12-09 01:31:19

标签: c# asp.net .net com

我正在修改使用COM引用的ASP.NET应用程序。代码通过以下方式创建对象的实例:

public static object COMCreateObject (string sProgID)
{
    try
    {
        Type oType = Type.GetTypeFromProgID(sProgID);
        if (oType != null)
        {
            return Activator.CreateInstance(oType);
        }
        else
        {
            throw new ApplicationException(
                 "Could not resolve ProgID for " + sProgID + 
                 " (Ensure the component is registered properly)");
        }
    }
    catch (Exception oExc)
    {
        PageInclude.ermHandleError(
                 "An error occured whilst creating " + sProgID +
                  " - " + oExc.ToString());
        throw oExc;
    }
}

GetTypeFromProgId返回一个有效的System._COMObject类型,但返回的三个属性(DeclaringMethod,Gen​​ericParameterAttributes和GenericParameterPosition)带有InvalidOperationException(“只能在Type.IsGenericParameter为true的Type上调用Method”。 )。

因此,调用Activator.CreateInstance(oType)也会失败(由于以下错误,从IClassFactory创建具有CLSID {508B4562-C89D-4DE9-4523-E6D507B3E3F2}的COM组件实例失败:800aeb29。)< / p>

我不确定COM组件的异常是否应该归咎于(它不是.NET组件,因此这些字段可能会丢失?)。

任何想法?

0 个答案:

没有答案