我创建了一个简单的 C# dll,并使用 RegAsm.exe
注册了它。其中有一个非常简单的方法,不带参数并返回一个数字,以下是一个简化版本。
namespace AVL_test {
interface ITestClass {
int GetNumber();
}
[ComVisible(true)]
public class TestClass: ITestClass {
public TestClass() { }
public int GetNumber() {
return 10;
}
}
}
我需要从PowerShell调用该方法,因此我添加了类型。
Add-Type -Path "C:\myPath\AVL_test.dll"
似乎已经加载,因为如果我使用
[AVL_test.TestClass]
,我会得到以下输出:
但是,如果我尝试通过键入IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False TestClass System.Object
[AVL_test.TestClass]::GetNumber()
来调用GetNumber()
,我会得到以下错误:
我做错了什么吗?方法调用失败,因为[AVL_test.TestClass]不包含名为“GetNumber”的方法。
public static int GetNumber()
,则会出现错误,指出“'AVL_test.TestClass.GetNumber()'无法实现接口成员,因为它是静态的”。 - Naigel[ComVisible]
属性。只有在将程序集注册为COM对象时才需要使用该属性,但是PowerShell可以本地加载.NET类型和程序集。 - PeterK