Расширение ImageMagickNet - PullRequest
       17

Расширение ImageMagickNet

23 голосов
/ 09 февраля 2010

Я пытаюсь добавить пользовательскую функцию в класс ImageMagickNet. Он должен использовать метод IsSimilarImage magick из проекта ImageMagick.NET, но меня смущает вопрос о том, нужно ли мне маршрутизировать этот метод через Magick ++, поскольку любая доступная для .NET функциональность происходит из Magick ++.

1 Ответ

2 голосов
/ 19 мая 2015

Это довольно старый, но, как и без ответа, здесь идет.

Обратите внимание, что я не смотрел библиотеки ImageMagick, поэтому любые подробности реализации в приведенном ниже коде являются строго примером. Замените мусор правильной реализацией. Предполагая, что он экспортирует допустимые объекты .NET, он будет работать следующим образом:

' Put your extension methods or properties in a clearly labeled module file, on its own within your project
Module ImageMagickNetExtensions

    ' Define an extension method by using the ExtensionAttribute, and make the first argument
    ' for the method the type that you wish to extend. This will serve as a reference to the extended
    ' instance, so that you can reference other methods and properties within your extension code.
    <Extension()> _
    Public Function SomeExtensionFunction(ByVal imn As ImageMagickNet, ByVal filename As String) As Boolean
        Return imn.IsSimilarImage(filename)
    End Function

End Module

Class SomeClass
    ' To use your extension method within your project containing the extension module, simply
    ' call it on any valid instance of the type you have extended. The compiler will call your code
    ' whenever it sees reference to it, passing a reference to your extended instance.
    Private imn As New ImageMagickNet

    Private Sub DoSomething()
        If imn.SomeExtensionFunction("c:\someimage.jpg") Then
            ...
        End If
    End Sub
End Class
...