加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我如何在VB代码中调用C#扩展方法

发布时间:2020-12-17 00:28:15 所属栏目:大数据 来源:网络整理
导读:我有一个类库,其中有一些用C#编写的扩展方法和一个用VB编写的旧网站. 我想从VB代码调用我的扩展方法,但是它们不会出现在intelisense中,当我访问该站点时,我会收到编译错误. 我已经拥有所有必需的导入,因为在Intelisense中,同一命名空间中包含的其他类似乎正
我有一个类库,其中有一些用C#编写的扩展方法和一个用VB编写的旧网站.

我想从VB代码调用我的扩展方法,但是它们不会出现在intelisense中,当我访问该站点时,我会收到编译错误.

我已经拥有所有必需的导入,因为在Intelisense中,同一命名空间中包含的其他类似乎正常.

有什么建议么

编辑:更多信息来帮助一些评论.

我的实现看起来像这样

//C# code compiled as DLL
namespace x.y {
    public static class z {
        public static string q (this string s){
             return s + " " + s;
        }

    }
}

和我这样的使用

Imports x.y

'...'
Dim r as string = "greg"
Dim s as string = r.q() ' does not show in intelisense
                        ' and throws error : Compiler Error Message: BC30203: Identifier expected.
它适用于我,虽然有几个怪癖.首先,我创建了一个针对.NET 3.5的C#类库.这是项目中唯一的代码:
using System;

namespace ExtensionLibrary
{
  public static class Extensions
  {
    public static string CustomExtension(this string text)
    {
      char[] chars = text.ToCharArray();
      Array.Reverse(chars);
      return new string(chars);
    }
  }
}

然后我创建了一个面向.NET 3.5的VB控制台应用程序,并添加了对我的C#项目的引用.我将Module1.vb重命名为Test.vb,其代码如下:

Imports ExtensionLibrary

Module Test

    Sub Main()
        Console.WriteLine("Hello".CustomExtension())
    End Sub

End Module

这编译并运行. (我会调用Reverse()方法,但我不知道VB是否可能神奇地具有反向能力已经在某个地方 – 我不是长长的粉笔的VB专家.)

最初,我没有提供ExtensionLibrary作为Intellisense的导入.即使建成后,“Imports ExtensionLibrary”也是灰色的,一个灯泡提供了去除所谓冗余导入的机会. (这样做打破了项目.)这可能是ReSharper而不是Visual Studio,记住你.

所以要把一个很长的故事缩短,可以做到这一点,它应该是正常的.我不认为问题是您使用的是旧版本的VB,或者您的项目不是针对.NET 3.5?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读