インターフェイスに少し問題があります。私のクラスの束は、ILayoutObject
インターフェースを実装しています。メソッドは、変数をILayoutObject
(デフォルトでは Nothing として) 宣言し、それをどのオブジェクトにするかを決定するコードを実行します。問題は、変数をパラメーターとして受け取り、それにオブジェクトを割り当てるメソッドで評価コードが実行されることです。オブジェクトの場合、これは問題ありません。オブジェクトはメソッドの変更によって影響を受け、すべて問題ありません。ただし、インターフェイスを使用する場合、呼び出しコード内の変数は残りNothing
、通常の変数のように動作します。誰かがそれを回避する方法について何か考えを持っていますか? 残念ながら、コード構造のために、ByRef
または関数を使用できません:(
ここにいくつかのコードがあります:
Protected LayoutHandler As Dictionary(Of String, Action(Of Constants.OptionsEntryStructure, ILayoutElements)) = New Dictionary(Of String, Action(Of Constants.OptionsEntryStructure, ILayoutElements)) From
{
{Constants.KeyLayoutType, AddressOf KeyLayoutType}
}
Sub MakeLayOuts
Dim LayoutElement As ILayoutElements = Nothing
Dim Value = "SomeValues"
Dim key = "Key"
LayoutHandler(key)(Value, LayoutElement)
' LayoutElement remains nothing.....
End Sub
Protected Sub KeyLayoutType(elem As Constants.OptionsEntryStructure, Layout As ILayoutElements)
Layout = New LayoutObject 'which would implement the interface
End Sub