5

我正在编写一个使用我自己的 DLL 的脚本:

[System.Reflection.Assembly]::LoadFile("E:\Group.School.dll")

我想访问. Student class该静态方法已被重载。

Class Student
{        
    public static sting GetData(string id)
    {
        ....
    }

    public static sting GetData(string fName, string lName)
    {
        ....
    }        
}

从 PowerShell 我将访问第一种方法,如下所示:

$data = [Group.School.Student]::GetData
$data.Invoke("myId") 

这给了我一个例外说

使用“1”参数调用“调用”的异常:“使用“1”参数调用“GetData”的异常:“对象引用未设置为对象的实例。”

4

3 回答 3

8

原始代码包含一些拼写错误(例如Class, sting)和一个错误 - 类必须是public.

这是正确的代码,可以正常工作:

# the corrected code added inline (might be in a DLL, as well):
Add-Type @'
public class Student
{
    public static string GetData(string id)
    {
        return "data1";
    }

    public static string GetData(string fName, string lName)
    {
        return "data2";
    }
}
'@

# call the static method:
[Student]::GetData('myId')
于 2013-08-01T09:58:27.150 回答
4

尝试:

[Group.School.Student]::GetData('myId')
于 2013-08-01T09:05:24.457 回答
0

确保包含 Student 类的 dll 未在 Visual Studio 中使用“任何 CPU”选项编译,尝试为 x86 编译它。

于 2015-06-02T21:15:39.750 回答