3

女士们先生们,我正在尝试创建一个可以在几个不同项目之间共享的 DLL,其中包括我为简化代码而编写的各种扩展方法。了解此类 DLL 在 C# 和 VB.net 项目之间共享是可行的。然而,到目前为止,我一直无法创建 DLL,甚至无法包含子项目并以这种方式引用它并能够访问我的扩展。

我可以在对象浏览器中看到引用,但导入语句不会将我的子项目引用作为选项。VB.net 不允许我将扩展放在类中,而且我似乎无法在网络上找到任何可以解释这一点的线索。提前致谢。

例子...

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

您需要使用 Public 关键字标记您的扩展模块。此外,请确保您的项目属性在您的消费项目中列出您的库项目作为参考;仅仅出现在对象浏览器中并不意味着您已经正确设置了引用。

于 2012-09-01T05:15:37.087 回答
0

The following console application code is perhaps nonsensical, but leverages your exact code above with the exception that I made your module Public versus the default of Friend.

In my solution, ClassLibrary3 is the VB class library project and included as a reference in the console application project.

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 回答