こんにちは。
前提・実現したいこと
Windows10を使ってVisual Studo 2017でWindowsFormアプリケーションのプロジェクトを作っています。
もともとVisual BasicのプロジェクトだったコードをC#に書き換えています。
Visual Basicを書いた担当はいないので、詳細は不明です。
Visual Basicのコードは動作しています。
ILSpyでコンバートしたC#のコードも動作しています。
それぞれのコードは下記のとおりです。
発生している問題
もともとのVisual Basicのコードに比べて複雑で、わかりにくいです。
usingでMicrosoft.VisualBasic.CompilerServices;を使っていて、それもなくしたいです。
4点ほどわからない点があり、質問しました。
(1)Interaction.CreateObjectとはなにで、C#で処理する方法は?
(2)RuntimeHelpers.GetObjectValueとはなにで、C#で処理する方法は?
(3)NewLateBinding.LateGetとはなにで、C#で処理する方法は?
(4)Conversion.ChangeTypeとはcastと違うのか?
以上です。
当方、Visual Basicはぜんぜん読めません。
アドバイスいただければ幸いです。
該当のソースコード
C#
1using Microsoft.VisualBasic.CompilerServices; 2using System.Runtime.CompilerServices; 3 4namespace FeliCaAccess 5{ 6 public class FeliCaObjectModel 7 { 8 public int SetupResult; 9 public objuct Ifd; 10 public objuct IcCard; 11 public objuct FeliCa; 12 13 object[] objects = new object[1] 14 { 15 IcCard 16 }; 17 bool[] CanWrite = new bool[1] 18 { 19 true 20 }; 21 22 public FeliCaObjectModel() 23 { 24 Ifd = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("IFD.RW", "")); 25 IcCard = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("ICC.Card", "")); 26 FeliCa = RuntimeHelpers.GetObjectValue(Interaction.CreateObject("FeliCa2.API", "")); 27 28 objects = new object[1] 29 { 30 IcCard 31 }; 32 33 object returnValue = NewLateBinding.LateGet(FeliCa, null, "SetUp", objects, null, null, CanWrite); 34 IcCard = RuntimeHelpers.GetObjectValue(objects[0]); 35 SetupResult = Conversions.ToInteger(returnValue); 36 } 37 } 38}
VisualBasic
1 Public ifd As Object '// IFDオブジェクト 2 Public icc As Object '// Cardオブジェクト 3 Public fel As Object '// FeliCaオブジェクト 4 5 ifd = CreateObject("IFD.RW") 6 icc = CreateObject("ICC.Card") 7 fel = CreateObject("FeliCa2.API") 8 9 result = fel.SetUp(icc)
補足情報(FW/ツールのバージョンなど)
Intel Pentium(R) CPU 4415 Y 1.60GHz RAM 8GB Windows10Pro 64bit 1803 17134.345 Microsoft Visual Studio Community 2017 Version 15.8.5 VisualStudio.15.Release/15.8.5+28010.2036 Microsoft .NET Framework Version 4.7.03056 インストールされているバージョン:Community