调用程序集的方法是通过.NET中程序集所有者的反射创建的
我知道如何通过反射创建一些对象并传递一些参数调用程序集的方法是通过.NET中程序集所有者的反射创建的,.net,reflection,.net-assembly,.net,Reflection,.net Assembly,我知道如何通过反射创建一些对象并传递一些参数 Dim assembly As System.Reflection.Assembly Dim control As Object assembly = System.Reflection.Assembly.Load("WpfControlLibrary1") control = assembly.CreateInstance("WpfControlLibrary1.Main") control.Maximize("true") 我的问题是,是否
Dim assembly As System.Reflection.Assembly
Dim control As Object
assembly = System.Reflection.Assembly.Load("WpfControlLibrary1")
control = assembly.CreateInstance("WpfControlLibrary1.Main")
control.Maximize("true")
我的问题是,是否有一种方法可以将信息从“控件”获取到该“控件”的“所有者”
所以我想应该是在所有者和创建的程序集之间进行双向交互的某种方式
例如,在某个计时器内,我希望定期获取“控件”的状态
foreach(...)
{
var state = control.GetState(); // ????? Is it possible ?
Sleep(10000);
}
所以我需要的是找回一些返回的对象。
提前感谢你们给我的兄弟姐妹们提供了编程方面的有用线索 要调用在另一个程序集中的类上定义的方法,您需要如下所示:
Assembly assembly = Assembly.Load("OtherAssembly");
Type controlType = assembly.GetType("OtherAssembly.OtherAssemblyClass");
object control = Activator.CreateInstance(controlType);
controlType.InvokeMember("SetFullName", BindingFlags.InvokeMethod, null,
control, new object[] { "FirstName", "LastNameski" });
这将使用参数“FirstName”
和“LastNameski”
这将在同一对象上调用名为GetFullName
的方法,该方法不接受任何参数(因此调用中的最后一个null
)并返回字符串
Console.WriteLine(result.GetType().FullName);
这将打印出“System.String”
这将打印出“FirstName LastNameski”
在本例中,另一个程序集包含此类:
namespace OtherAssembly
{
public class OtherAssemblyClass
{
private string firstName;
private string lastName;
public string GetFullName()
{
return firstName + " " + lastName;
}
public void SetFullName(string first, string last)
{
firstName = first;
lastName = last;
}
}
}
您确定行
控件.Maximize(“true”)
可以工作吗?我的意思是像参数一样传递一些对象。但是是的。。。它起作用了。这是真正的代码。重点是Visual Studio没有在点之后显示“最大化”方法。:)但是它很好用!谢谢你的回答!看起来不错。对不起,有什么线索可以在MSDN下找到吗?
Console.WriteLine(result);
namespace OtherAssembly
{
public class OtherAssemblyClass
{
private string firstName;
private string lastName;
public string GetFullName()
{
return firstName + " " + lastName;
}
public void SetFullName(string first, string last)
{
firstName = first;
lastName = last;
}
}
}