使用ILSPY我发现BV method
内有bvlsFortran.dll
个可用内容
但是,ILSPY表示它是CALCBV!BV
看看是否正确我在Visual Studio中添加了作为参考,然后在main上添加:
![enter image description here][3]
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("bvlsFortran.dll");
// Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("CALCBV!BV");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
// Type = System.String
// Position = 0
// Optional=False
foreach (ParameterInfo Param in Params)
{
Console.WriteLine("Param=" + Param.Name.ToString());
Console.WriteLine(" Type=" + Param.ParameterType.ToString());
Console.WriteLine(" Position=" + Param.Position.ToString());
Console.WriteLine(" Optional=" + Param.IsOptional.ToString());
}
它是正确的,显示有关它的信息。
我怎么称呼这种方法?
我不能写CALCBV!BV
因为编译器抱怨...
如果我在方法上写BV
或bvlsFortran
,则无法找到它。
答案 0 :(得分:1)
您可以使用要传递给该函数的参数数组在Invoke
上调用Methodinfo
。
名称CALCBV!BV
可能是混淆的结果,该dll的发布者不希望您直接调用它。
Method.Invoke( args );
答案 1 :(得分:1)
如果它是基于.Net的dll,并且您在应用程序中有任何方式引用它,为什么使用反射?请尝试直接通过bvlsFortran.BV
调用该方法。