WPF调用从另一个dll获取参数的方法

时间:2014-02-19 16:45:00

标签: c# wpf

如何运行从另一个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;
    }

1 个答案:

答案 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