【发布时间】:2015-11-26 06:20:44
【问题描述】:
我创建了一个类库 DLL 并将其打包,但是当我在 VBA (Excel) 中使用它时,它没有任何方法。来自另一个 .NET 程序的一切都很好:
这是我的代码:
namespace NeilLibrary
{
public interface INeilTest
{
string DoMethodReturn(string name);
string DoMethodOut(string name, out string name2, out bool isPrev);
}
[Guid("BA7CC0F2-9C07-4EF9-B799-18D317B7E293")]
[ComVisible(true)]
public class NeilTest
{
public NeilTest() { }
[ComVisible(true)]
public string DoMethodReturn(string name)
{
return "name: " + name;
}
[ComVisible(true)]
public string DoMethodOut(string name, out string name2, out bool isPrev)
{
name2 = "New Value";
isPrev = true;
return "Name: " + name;
}
} }
我在程序集中启用 COM 的情况下构建了它,并运行了以下命令:
regasm.exe NeilLibrary.dll /tlb:neil.tlb
效果很好。在 Excel 中,我导入了 tlb,它出现在对象浏览器中,因此创建正常,但没有方法。虽然显示了接口,但也显示了它的方法,但这并没有多大用处。
有人可以帮忙吗。
我添加了无参数构造函数,因为我在某处读到有类似问题的人必须这样做。
【问题讨论】:
-
请阅读我在您其他帖子中的回复.....stackoverflow.com/questions/33923624/…
-
COM 类型没有“构造函数”,这就是为什么如果托管类型只有一个参数化构造函数,你就不能将它暴露给 COM - 实际上你可以,但是您的 COM 客户端将无法实例化它。 ...在你碰壁之前,你也不能将泛型类型暴露给 COM。 =)