奇妙なことに遭遇しました。リフレクションを使用してクラスのインスタンスを作成しています。これはいくつかのパラメーターを渡します。1 つは variavle: ipAddress です。コンストラクターでインスタンスを作成すると、変数はフィールドに格納されますが、コンストラクターが完了し、(デバッガーで) クラス内でチェックするインスタンスを作成する行に戻り、フィールド 'ipAddress' が null に変更されました。これはどのように可能ですか?
これはクラスの一部です:
public class moxa_nport_5110
{
string instanceName;
Delegate triggerCallBackMethod;
private BPUConsole bpuConsole { get; set; }
TcpIpServer server;
string ipAddress;
public moxa_nport_5110(Delegate TriggerCallBackMethod, Delegate Callback, params object[] CtorParam)
{
#region Initialize
triggerCallBackMethod = TriggerCallBackMethod;
instanceName = (string)CtorParam[0];
string ipAddress = (string)CtorParam[1];
int Port = (int)CtorParam[2];
bpuConsole = new BPUConsole(Callback, instanceName);
#endregion
server = new TcpIpServer("10.100.184.140", 8888, false);
server.OnDataReceived += new TcpIpServer.ReceiveEventHandler(server_OnDataReceived);
server.OnClientConnected += new TcpIpServer.InfoEventHandler(server_OnClientConnected);
server.OnClientDisconnected += new TcpIpServer.InfoEventHandler(server_OnClientDisconnected);
server.OnAbnormalConnectionDisconnect += new TcpIpServer.InfoEventHandler(server_OnAbnormalConnectionDisconnect);
server.AddClient(ipAddress, 1);
}
public void SendData(byte[] Data)
{
server.SendData(ipAddress, Data);
}
これは、インスタンスを作成する行です:
driverInterface = Activator.CreateInstance(driverType, tempParam); //create an instance of the driver
ここに戻ると、フィールド ipAddress の値は null です。
編集:
フィールドは同じ値ですが、アクセスできません: