如何使用相同的参数调用在C#中定义的函数,返回类型和相同的名称,
发布时间:2020-12-15 08:24:50 所属栏目:百科 来源:网络整理
导读:我有一个用C#编译的类项目a.dll.它包含以下代码. public class MyClass{ public int Add(int i,int j) { return (i+j); } public int add(int i,int j) { return (i+j)*2; }} 从C#项目中我可以像这样调用这些函数 public class MyOtherClass{ MyClass mcls=n
我有一个用C#编译的类项目a.dll.它包含以下代码.
public class MyClass{ public int Add(int i,int j) { return (i+j); } public int add(int i,int j) { return (i+j)*2; } } 从C#项目中我可以像这样调用这些函数 public class MyOtherClass{ MyClass mcls=new MyClass(); mcls.Add(1,2); mcls.add(2.3); } 但是如何从VB.Net项目中调用它呢?我现在无法使用Visual Studio.因此,如果有人提供答案,那将非常有帮助. 编辑1 我有一个VB.NET项目,我需要添加一个C#dll的引用(比如说dll包含MyClass).所以我可以调用两个方法(Add(int,int),add(int,int)).但在VB.NET中,这是区分大小写的.有没有办法实现这个目标? 编辑2 假设我添加了对dll的引用,因此我可以调用这些函数. Dim myObj as New MyClass myObj.Add(1,2) myObj.add(1,2) 如果此代码有效,编译器如何识别正确的函数? 解决方法
你最好的选择是在这里使用反射 – VB根本无法确定你正在调用哪个函数,因为在VB中’add’与’Add’相同.
这是我测试它所做的(我不确定你需要在哪里组合’BindingFlags’): Dim mcls As New [MyClass] Dim t As Type = mcls.GetType() Dim x = t.InvokeMember("add",BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod,Nothing,mcls,New Object() {1,2}) Dim y = t.InvokeMember("Add",2}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |