创建C#dll并使用powershell方法

时间:2015-05-07 09:27:54

标签: c# powershell dll

我创建了一个简单的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

但如果我尝试通过输入GetNumber()来调用[AVL_test.TestClass]::GetNumber(),我会收到此错误

  

方法调用失败,因为[AVL_test.TestClass]不包含名为' GetNumber'的方法。

我做错了吗?

1 个答案:

答案 0 :(得分:7)

您的方法应为static,或者您需要创建该类型的实例(TestClass)。

最后可以使用

完成
New-Object -TypeName <full qualified type name> -ArgumentList <args>

或者在您的具体案例中:

$test = New-Object -TypeName AVL_Test.TestClass
$test.GetNumber()