如何创建一个在JavaScript中使用的C#.Net DLL
How to create an C#.Net DLL to use in JavaScript
我创建了一个带有几个简单类的.Net DLL。我已经使用RegAsm注册了DLL,我收到了一条消息,类型注册成功。
使用的RegAsm语法:
C: ''Windows''Microsoft.NET''Framework''v4.0.30119>RegAsm.exe"D:''Projects''TestDLL.Core.dll"
C#代码:
namespace MyTestDLL.Core
{
public class PacketInfo
{
// constructor
public PacketInfo()
{
}
public string HostName { get; set; }
// and so on ......
}
}
我已在此DLL的AssemblyInfo.cs文件中将ComVisible属性设置为true。//[汇编:ComVisible(true)]
然而,当我在JavaScript中创建一个对象并在命令提示符下运行该脚本时,我会发现它要么不是对象,要么为null。
JS代码:
var testObj = new ActiveXObject(MyTestDLL.Core.PacketInfo);
testObj.HostName = "Test";
有人能告诉我如何解决这个问题吗?
您需要向类添加ProgId属性,如下所示:
[Guid("some guid that you will never change")]
[ProgId("MyLib.PacketInfo")] // this is arbitrary
public class PacketInfo
{
....
}
guid是可选的,但如果你不自己设置,它将是你无法控制的,所以最好定义它。当然,我没有添加ComVisible,因为你已经在程序集级别定义了它(我个人更喜欢在类级别设置它)。
然后,一旦注册,您就可以这样使用它(将progid用作字符串):
var testObj = new ActiveXObject('MyLib.PacketInfo');
testObj.HostName = "Test";
我可以通过在类上方的My DLL中添加以下行来实现这一点
[Guid("A32AB771-9967-4604-B193-57FAA25557D4"), ClassInterface(ClassInterfaceType.None)]
早些时候,我的代码中没有ClassInterfaceType部分。还要确保每个类都有唯一的GUID。仅供参考:您可以使用Visual Studio Tools GUID Creator GUI创建GUID。
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 将数据从javascript文件导入VB.Net页面
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- jQuery Error adadvisor.net
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 如何创建一个在JavaScript中使用的C#.Net DLL
- 可以在带有HTML5的Windows应用商店应用程序中使用以.net(C#)编译的dll
- 是否有等效于Java Jar或.NET DLL的JavaScript
- 在HTML页面中调用.net类库(DLL)
- 我如何在Windows Metro应用程序中使用.net Framework 4.0编译的dll ?
- 从javascript访问.Net DLL对象