通过反射获取程序集中所有表单的文本属性

时间:2017-03-20 10:10:32

标签: c# winforms reflection .net-assembly

我正在尝试迭代我的解决方案中的所有程序集,获取所有表单并检索每个表单的text属性,但我真的不知道如何获取值。这是我的代码:

 Type formType = typeof(Form);

 var assemblies =
            AppDomain.CurrentDomain.GetAssemblies();

 foreach (var assembly in assemblies)
 {
    var types = assembly.GetTypes();

    foreach (var type in types)
    {
       if (formType.IsAssignableFrom(type))
       {
          var properties = type.GetProperties().Where(x => x.Name == "Text");
       }
    }
 }

我无法检索表单文本属性的具体值。我也 试过

var property = type.GetProperty("Text").GetValue(???, null);

但不知道如何获得当前的课程。有任何想法吗?谢谢!

编辑:我也试过

var frm = (Form)Activator.CreateInstance(type)

但如果表单没有无参数构造函数,则会失败。

2 个答案:

答案 0 :(得分:0)

您可以尝试迭代Application.OpenForms集合。这将为您提供应用程序拥有的所有已打开的表单。 MSDN

答案 1 :(得分:0)

如果您只需要参考开放表单,则可以使用Application.OpenForms 否则,您需要有一些所有表单引用的列表。