在C#程序(.Net 4.5.2)中,我们使用以下模式创建COM服务器类的实例:
Type t = Type.GetTypeFromCLSID(guid, hostname);
server = Activator.CreateInstance(t);
今天,对于具有特定guid和hostname = "localhost"
组合的COM服务器,我们遇到了您在主题行中重现的错误消息。在互联网上搜索我们发现了几次点击(" com dll未注册"," clsid不在注册表中",替换目标" AnyCPU" by" x86&# 34;等),但我们可以排除我们发现的所有解释。对于同一主机上的其他几台服务器,我们的程序也按预期工作,而其他客户端可以无错误地连接到服务器。
幸运的是,一位同事偶然发现用"localhost"
指针替换null
主机名使得该程序在我们的特定示例中起作用。不幸的是,我不明白这里发生了什么 - 有更深入了解COM模型的人能解释一下吗?
根据Type.GetTypeFromCLSID(Guid clsid, string server)
的{{3}},'如果服务器名称为null,则此方法会自动恢复为本地计算机'。如前所述,对于本地主机上的大多数服务器,字符串" localhost"在这个代码片段工作得非常好。在这种情况下,字符串必须被null
指针替换的原因是什么?