在dll中使用主项目类方法

时间:2017-08-05 22:13:58

标签: c# wpf plugins reflection

我正在使用类库的项目,我需要我的类与主机应用程序通信。我该如何使用主项目类方法?

我使用 Reflection 将自定义程序集加载到应用程序域中。

private void myButton(object sender, RoutedEventArgs e)
{
   MainAppNameSpace.handeling_buttons.MethodOfClass(sender as Button);
}

更新 我的问题很简单,如何使用后来的类,并且在编写插件类时不存在。我对这种需求的方法是定义外部库中的类,可以由主程序集和插件使用。但是我不确定它在WPF环境中的效率和可靠性。

1 个答案:

答案 0 :(得分:0)

您应该通过以下代码从应用程序域中找到您的类型(类):

Type objectType = (from asm in AppDomain.CurrentDomain.GetAssemblies()
                        from type in asm.GetTypes()
                        where type.IsClass && type.Name == "ClassName"
                        select type).Single();

然后调用您想要的方法。这意味着你应该知道你的方法名称:

  objectType.GetMethod("YourMethod").Invoke(Activator.CreateInstance(type),null);

如果要传递参数,可以使用以下代码执行此操作:

 objectType.GetMethod("YourMethod").Invoke(Activator.CreateInstance(type, "MainFunctionParameter"), new object[] { "ParameterToPass" });