2010-02-09 4 views
23

J'essaie d'ajouter une fonction personnalisée à la classe ImageMagickNet. Il devrait utiliser la méthode IsSimilarImage magick à partir du projet ImageMagick.NET, mais je suis confus quant à savoir si je dois router cette méthode à travers la Magick ++, car toute fonctionnalité disponible pour le côté .NET provient de la Magick ++.Extension ImageMagickNet

Répondre

2

Ceci est assez vieux mais comme il est sans réponse, ici va.

Veuillez noter que je n'ai pas regardé les bibliothèques ImageMagick, donc les détails d'implémentation dans le code ci-dessous sont strictement un exemple. Remplacer les déchets avec une mise en œuvre correcte. En supposant qu'il exporte des objets .NET valides, voici comment cela fonctionnerait:

' 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