|
■No36417 (なちゃ さん) に返信 > なんかソース出した方が早いかも。 > 説明し直してもらってもやっぱりどうなってるのかよく分かりません。 > ちょっと用語の使い方やら正確ではなさそうですし。
すみません、ソース出します。 現在のソースは、いろんなことに手を出してしまって汚いので、 初期のころのソースを簡略化して出します。 今とはちょっと用語が違うかもしれませんが、構成は一緒です。
1.IPluginインターフェイス
Public Interface IPlugin ReadOnly Property Name() As String 'プラグイン名 Function Run(ByVal str As String) As Object 'プラグイン機能 End Interface
2.clsStructクラス(stAクラス)
Public Class clsStruct Public str01 As String Public str02 As String End Class
3.StructChar.dll(MakeStruct.dll)
Imports IPlugin Public Class StructChar Implements IPlugin.IPlugin
'プラグイン名 Public ReadOnly Property Name1() As String Implements IPlugin.IPlugin.name Get Return "文字列変換" End Get End Property
'プラグイン機能 Public Function Run1(ByVal str As String) As Object Implements IPlugin.IPlugin.Run Dim st1 As New st
st1.str01 = Left(str, 1) st1.str02 = Left(str, 5) st1.str03 = str
Return st1
End Function
'変換クラス Public Class Inherits clsStruct Public str03 As String End Class End Class
4.
Imports IPlugin Public Class PluginForm1
'プラグイン Private plugins() As IPlugin.IPlugin
Class sttarm Inherits clsStruct End Class
Private Sub PluginForm1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load 'インストールされているプラグインを調べる Dim pis As PluginInfo() = PluginInfo.FindPlugins()
'すべてのプラグインクラスのインスタンスを作成する For i As Integer = 0 To pis.Length - 1 ReDim plugins(i) plugins(i) = pis(i).CreateInstance() Next i
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Dim str As String = "0123456789"
Dim stA As sttarm = CType(plugins(0).Run(str), sttarm) MessageBox.Show(stA.str01)
End Sub
End Class
追記:http://codezine.jp/article/detail/1?p=1を参考に作っております。 というか、丸写しです。
|