如何运行从另一个dll获取参数的方法? 我从另一个dll导入一个UserControl,如下所示,但我现在需要在该UserContol中调用一个方法,或者能够设置该类中包含的变量。
加载UserControl
UserControl ucSupportButton =
new Bootstrapper().LoadUserControl("SC.Support.dll", "Button");
Bootstrapper中使用的代码
public UserControl LoadUserControl(string dllName, string loadType)
{
if (File.Exists(Path.Combine(applicationRoot, dllName)))
{
Assembly asm = Assembly.LoadFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), dllName));
Type[] types = asm.GetTypes();
Type type = types.Where(t => t.Name.Equals(loadType)).FirstOrDefault();
if (type != null)
{
return Activator.CreateInstance(type) as UserControl;
}
}
return null;
}
答案 0 :(得分:1)
@HighCore评论似乎是最好的方式。根据您的设计,反射是另一种选择。您可以使用反射来获取该类型的方法或字段,然后调用或设置它。
var method = paymentObjectInstance.GetType().GetMethod("MethodNameHere",
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
if (method == null)
{
return null;
}
var result = method.Invoke(paymentObjectInstance, null);
这是MSDN的一点点overview of reflection。