3

ご列席の皆様、コードを簡素化するために作成したさまざまな拡張メソッドを含む、いくつかの異なるプロジェクト間で共有できる DLL を作成しようとしています。このような DLL は、C# プロジェクトと VB.net プロジェクトの間で共有することができます。ただし、これまでのところ、DLL を作成したり、サブ プロジェクトを含めてそのように参照したり、拡張機能にアクセスしたりすることさえできませんでした。

オブジェクト ブラウザで参照を確認できますが、インポート ステートメントでサブプロジェクトの参照がオプションとして表示されません。VB.net では、拡張機能をクラス内に配置することはできません。これを説明する手がかりが Web 上に見つからないようです。前もって感謝します。

例...

Imports System.Runtime.CompilerServices
Imports System.Text.RegularExpressions
Module Extensions

    <System.Runtime.CompilerServices.Extension()>
    Public Function ToEnum(Of T)(ByVal value As String) As T
        Try
            Return (CType([Enum].Parse(GetType(T), value.Replace(" ", ""), True), T))
        Catch ex As Exception
            Return (CType([Enum].Parse(GetType(T), 0, True), T))
        End Try

    End Function
End Module

4

2 に答える 2

6

Extensions モジュールを Public キーワードでマークする必要があります。また、使用するプロジェクトのプロジェクト プロパティにライブラリ プロジェクトが参照としてリストされていることを確認してください。オブジェクト ブラウザに表示されるだけでは、参照が適切に設定されているとは言えません。

于 2012-09-01T05:15:37.087 に答える
0

次のコンソール アプリケーション コードはおそらく無意味ですが、上記の正確なコードを利用していますが、モジュールをPublicデフォルトのFriend.

私のソリューションでClassLibrary3は、VB クラス ライブラリ プロジェクトであり、コンソール アプリケーション プロジェクトに参照として含まれています。

Imports ClassLibrary3.Extensions

Module Module1

    Sub Main()
        Dim f As String = "hello"

        Console.WriteLine(f.ToEnum(Of System.ConsoleColor)())
    End Sub

End Module
于 2012-09-01T05:25:27.237 に答える