gpt4 book ai didi

c# - 如何使用相同的参数、返回类型和相同的名称调用在 C# 中定义的函数,但与 VB.NET 项目的大小写不同

转载 作者:太空狗 更新时间:2023-10-29 21:22:56 26 4
gpt4 key购买 nike

我有一个用 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 的引用(say dll contains MyClass)。这样我就可以调用两个方法(Add(int ,int) , 添加(int,int)).但在 VB.NET 中,这是区分大小写的。有什么办法可以实现吗?

编辑 2

假设我添加了对 dll 的引用,这样我就可以调用这些函数。

Dim myObj as New MyClass
myObj.Add(1,2)
myObj.add(1,2)

如果此代码有效,编译器如何识别正确的函数?

最佳答案

你最好的选择是在这里使用反射 - VB 根本无法确定你正在调用哪个函数,因为在 VB 中“添加”与“添加”相同。

这是我为测试它所做的(我不太确定您需要在此处组合哪个“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", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod, Nothing, mcls, New Object() {1, 2})

关于c# - 如何使用相同的参数、返回类型和相同的名称调用在 C# 中定义的函数,但与 VB.NET 项目的大小写不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com