DLL的扩展方法

时间:2012-02-27 07:28:07

标签: vb.net visual-studio-2010 .net-4.0 vb.net-2010

我在VB.NET模块中创建了几个扩展方法。我把它们放在一个类中,构建它并获得DLL。 从另一个程序我引用了该DLL并使用Imports导入它。 扩展方法出现在IntelliSense中,它可以正常工作,但错误控制台中会出现警告,

无法解析此引用。无法找到程序集“nK0deExtendedMethods”。检查以确保程序集存在于磁盘上。

有没有人知道为什么会出现这个错误,即使我已经引用了DLL?

这是我用扩展方法放置模块的类。

Imports System.Runtime.CompilerServices
Imports System.Drawing

Namespace nK0deExtendedMethods

    Public Module ExtMethods

        <Extension()>
        Public Function Merge(ByVal img1 As Image, ByVal img2 As Image) As Image

            Dim bmp As New Bitmap(Math.Max(img1.Width, img2.Width), img1.Height + img2.Height)
            Dim g As Graphics = Graphics.FromImage(bmp)

            g.DrawImage(img1, 0, 0, img1.Width, img1.Height)
            g.DrawImage(img2, 0, img1.Height, img2.Width, img2.Width)
            g.Dispose()

            Return bmp

        End Function

    'Public Class NewImageMethods

    'End Class

End Namespace

我有另一个疑问。在Imports语句中,我必须提及DLL的名称以及Namespace名称。像这样,

Imports ExtendedMethods.nK0deExtendedMethods

通常你只需导入命名空间的名字,对吧?为什么会这样?

非常感谢大家。

2 个答案:

答案 0 :(得分:0)

VB'模块'类型非常特别。

您可以使用:

Imports ExtendedMethods

但是你必须引用这样的代码:

nK0deExtendedMethods.ExtMethods.Merge(Nothing, Nothing)

答案 1 :(得分:0)

我刚刚创建了一个新的Class,删除了Namespace并构建它。这很好。