4

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 ここに画像の説明を入力してください

ダスはそうでしたか、そしてそれをどのように管理するのですか?

4

1 に答える 1

2

名前空間の非表示が行われているように見えます。VB.NETプロジェクトには、デフォルトでプロジェクトの名前に設定されているルート名前空間が存在します。これは、 [プロジェクト]->[プロパティ]->[アプリケーション]->[ルート名前空間]から確認できます。

クラスが名前空間を明示的に指定する場合、ルート名前空間のプレフィックスが付けられます。たとえば、ルート名前空間がであるとしますRootNsDynamicLinq.vbファイルはこれの名前空間を指定しているので、System.Linq.Dynamic実際にはRootNs.System.Linq.Dynamicです。これにより、通常の.NETSystem名前空間が非表示になります。そのため、Visual Studioでは、すべての名前空間の前に。を付けるように求められますGlobal

C#ではこの概念が異なるため、誰かがC#バージョンのを使用したときにこの問題が発生することはないと思いDynamicLinqます。

これを修正するには、いくつかのオプションがあります(1つ選択してください)。

  1. DynamicLinq.vbを使用するそのファイル内のオブジェクトから名前空間宣言を削除し、完全な修飾を削除しますSystem.Linq.Dynamic。つまり、にSystem.Linq.Dynamic.SignatureなりSignatureます。他の場所で使用するには、を追加しImports System.Linq.Dynamicます。

  2. プロジェクト/プロパティ/アプリケーションからルート名前空間を空白にして削除します。そうすることで、プロジェクトはC#のようになり、すべてのクラスで名前空間を明示的に指定する必要があります。他の場所で使用するには、を追加しImports System.Linq.Dynamicます。

  3. ルート名前空間を保持し、の名前空間を変更するだけですDynamicLinq.vb。たとえば、以前と同じようにに変更してNewNs.Linq.Dynamic、完全な資格を削除しSignatureます。他の場所で使用するには、追加します(プレフィックスにImports RootNs.NewNs.Linq.Dynamic注意してください)。RootNs

于 2011-08-11T19:38:36.453 に答える