私はプログラムを作成しており、プログラムでプラグインをサポートしたいと考えています。プログラムが実装しなければならないインターフェイスを作成しました。私はプラグインを呼び出すために私のメインプログラムから、次のコードを使用しています:.NETアセンブリを動的にロードする
Dim asm As Assembly = Assembly.LoadFrom(ff.FullName)
' Get the type
Dim myType As System.Type = asm.GetType(asm.GetName.Name + "." + asm.GetName.Name)
' If the type is null then we try again without the root namespace name
If myType Is Nothing Then myType = asm.GetType(asm.GetName.Name)
' Check to see if the plugin implements the required Interface
Dim IsMyPlugin As Boolean = GetType(LGInterfaces.ILGSQLPlugin).IsAssignableFrom(myType)
Dim ActivePlugin As New PluginObject()
If IsMyPlugin Then
ActivePlugin.Plugin = CType(Activator.CreateInstance(myType), LGInterfaces.ILGPlugin)
すべてのものが動作し、私は理解できない一つの問題を除いて、私の公開されたプロパティにアクセスすることができています。
Private m_PanelObject As Windows.Forms.Control
Public Property PanelObject() As Windows.Forms.Control
Get
Return m_PanelObject
End Get
Set(ByVal value As Windows.Forms.Control)
m_PanelObject = value
End Set
[OK]をので、私は私のメインプログラムからこのプロパティを設定し、すべての作品:私のプラグインでは、私は、プロパティを公開するために、次のコードを使用します。例外を除いて、m_PanelObjectは何らかの理由でNothingに設定されます。私はプログラムのどこにも何も設定しておらず、プラグインのコードにNothingを設定する場所がありません。では、私はここで何が欠けていますか?私はこれがかなり明白であると確信しています。事前に感謝します
メインプログラムからサンプルを提供できますか?特に、例外がスローされる行はどこですか? – Galilyou
メインプログラムから次の行が呼び出されています。 Plugin.Plugin.DataWriteHeader(FileWriter、 "TestTable") これはプラグインのサブです。プラグイン自体は、例外がスローされる場所です。 –