我添加了指定的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前缀).