这是我在某些Dll中的c#代码
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
namespace LP_Misc
{
public class LP_Registery
{
LP_Registery()
{
ReadMyTestRegKey();
}
public void ReadMyTestRegKey()
{
RegistryKey regkey;/* new Microsoft.Win32 Registry Key */
regkey = Registry.CurrentUser.OpenSubKey(@"Software\PCBMatrix\LPWizard\experimental");
string[] valnames = regkey.GetValueNames();
string val0 = (string)regkey.GetValue(valnames[0]);
Console.Write("--------------------------------The {0} val is {1}", valnames[0], val0);
}
}
}
我试图从另一个dll中的某个vb代码调用它。
喜欢这个
Imports LP_Misc
.
.
.
Dim T As LP_Registery()
我没有收到任何错误,但它没有输入C#代码。 它只是跳过它并过去。
任何想法?
答案 0 :(得分:7)
您没有实例化您的对象。你需要这个:
Dim T As New LP_Registery()
但是,您的构造函数是私有的,因此也不起作用。你需要在你的对象中使用它:
public LP_Registery()
{
ReadMyTestRegKey();
}
答案 1 :(得分:3)
您的构造函数未声明为public,因此默认情况下在C#中它是private:
LP_Registery()
{
ReadMyTestRegKey();
}
将其更改为:
public LP_Registery()
{
ReadMyTestRegKey();
}
您也没有在VB.NET代码中调用构造函数。
T = new LP_Registery()
答案 2 :(得分:1)
没有New关键字,你的VB代码没有在C#dll中执行任何操作。将它作为VB代码的最后一行:
Dim T As New LP_Registry()
答案 3 :(得分:1)
代码中的这一行:
Dim T As LP_Registery()
...将T声明为LP_Registery
类型的数组,但实际上并不创建它的任何实例。您可能希望将其更改为:
Dim T As New LP_Registery()
答案 4 :(得分:0)
您可能必须将csproject添加到与vbproject相同的解决方案中。确保在您的vbproj中,您通过引用引用了csproj。
答案 5 :(得分:0)
你不需要
Dim t as LP_Registery
t = new LP_Registery