私はこれを機能させるために過去3週間ウェブを検索してきましたが、運がありません。
ちょっとした裏話:C#.NET4.0DLLを.NET4.0アプリケーションに挿入します。
(C ++で記述されたブートストラップDLLを使用してDLLを挿入し、アプリケーションで関数を呼び出すことができます)
このコードを機能させることはできますが、私がやろうとしているのは、クラスの新しいインスタンスを作成する代わりに、「実際の」値を取得することです。
以下は、Reflectionが機能したくない方法で機能している例です。この時点で、Reflectionが使用する必要があるものであるかどうかはわかりません。それとも私は間違った木を吠えているだけですか?
namespace TestFormsApp4
{
static class Program
{
private static TestClass1 Test = new TestClass1("from class 1");
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
BindingFlags Binding = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
Assembly App = Assembly.Load("TestFormsApp4");
//Get the TestFormsApp4.Program (static) type
Type Test1C = App.GetType("TestFormsApp4.Program");
//get the testclass2 field (TestClass2 testclass2;)
var Test1F = Test1C.GetField("Test", Binding);
//get the value from the field
var Test2C = Test1F.GetValue(Test1C);
Application.Run(new Form1());
}
}
}
namespace TestName1
{
class TestClass1
{
public bool testbool = false;
public TestClass2 testclass2;
public TestClass1(String SetString)
{
this.testclass2 = new TestClass2(SetString);
}
}
}
namespace TestName2
{
class TestClass2
{
public String teststring;
public TestClass2(String SetString)
{
teststring = SetString;
}
}
}