当前位置 : 主页 > 编程语言 > c语言 >

VB.NET和System.Linq.Dynamic命名空间

来源:互联网 收集:自由互联 发布时间:2021-06-24
我会用 System.Linq.Dynamic. 我添加了指定的Dynamic.vb文件,其开头如下: Option Strict OnOption Explicit OnImports System.Collections.GenericImports System.TextImports System.LinqImports System.Linq.ExpressionsImports System.
我会用 System.Linq.Dynamic.

我添加了指定的Dynamic.vb文件,其开头如下:

Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports System.Text
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Threading
Imports System.Runtime.CompilerServices

Namespace System.Linq.Dynamic
  Public Module DynamicQueryable

到我的(VB.NET)解决方案.

现在,Visual Studio在System.XXX引用的项目文件中不再识别,建议我将它们更改为Global.System.XXX

是Das,以及如何管理它?

看起来好像发生了一些命名空间隐藏.在VB.NET项目中,存在一个根命名空间,默认情况下设置为项目名称.你可以从Project – >中查看这个.属性 – >申请 – >根命名空间.

当一个类显式指定一个名称空间时,根名称空间会以它为前缀.例如,假设您的根命名空间是RootNs.由于DynamicLinq.vb文件指定了System.Linq.Dynamic的命名空间,因此这实际上是RootNs.System.Linq.Dynamic.这会隐藏常规的.NET System命名空间,这就是Visual Studio提示您使用Global为所有命名空间添加前缀的原因.

值得注意的是,在C#中这个概念是不同的,所以当有人使用DynamicLinq的C#版本时,我不希望出现这个问题.

要解决此问题,您有几个选择(选择一个):

>从DynamicLinq.vb中删除名称空间声明,并从该文件中使用System.Linq.Dynamic的对象中删除所有完整限定条件.换句话说,System.Linq.Dynamic.Signature成为签名.要在其他地方使用它,请添加Imports System.Linq.Dynamic.>将项目/属性/应用程序中的根命名空间删除为空.通过这样做,您的项目将更像C#,您应该在所有类中明确指定名称空间.要在其他地方使用它,请添加Imports System.Linq.Dynamic.>保留根命名空间,只需更改DynamicLinq.vb的命名空间.例如,将其更改为NewNs.Linq.Dynamic并像以前一样从Signature中删除完整的资格.要在其他地方使用它,请添加Imports RootNs.NewNs.Linq.Dynamic(注意RootNs前缀).

网友评论