2010-02-09 20 views
23

Ich versuche, eine benutzerdefinierte Funktion der Klasse ImageMagickNet hinzuzufügen. Es sollte die IsSimilarImage magick-Methode aus dem ImageMagick.NET-Projekt verwenden, aber ich bin verwirrt, ob ich diese Methode durch die Magick ++ leiten muss, da alle für die .NET-Seite verfügbaren Funktionen in Magick ++ entstehen.Erweitern ImageMagickNet

Antwort

2

Das ist ziemlich alt, aber wie es unbeantwortet ist, hier geht.

Bitte beachten Sie, dass ich mir die ImageMagick-Bibliotheken nicht angeschaut habe, daher sind alle Implementierungsdetails im folgenden Code nur ein Beispiel. Ersetzen Sie Müll durch korrekte Implementierung. Angenommen, es werden gültige .NET-Objekte exportiert, so würde es funktionieren:

' 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