我创建了一个简单的C#dll并使用它注册了它RegAsm.exe.一个非常简单的方法是在没有参数的情况下调用并返回一个数字,这里是一个简化版本.
namespace AVL_test {
interface ITestClass {
int GetNumber();
}
[ComVisible(true)]
public class TestClass: ITestClass {
public TestClass() { }
public int GetNumber() {
return 10;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要从Powershell调用该方法,所以我添加了类型
Add-Type -Path "C:\myPath\AVL_test.dll"
Run Code Online (Sandbox Code Playgroud)
它似乎被加载,因为如果[AVL_test.TestClass]我得到这个输出
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False TestClass System.Object
但如果我尝试GetNumber()通过键入调用[AVL_test.TestClass]::GetNumber()我得到此错误
方法调用失败,因为[AVL_test.TestClass]不包含名为"GetNumber"的方法.
难道我做错了什么?
您的方法应该是static或者您需要创建该类型的实例(TestClass).
最后可以使用
New-Object -TypeName <full qualified type name> -ArgumentList <args>
Run Code Online (Sandbox Code Playgroud)
或者在您的具体情况中:
$test = New-Object -TypeName AVL_Test.TestClass
$test.GetNumber()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5963 次 |
| 最近记录: |