Я экспериментировал с приложением, которое будет сканировать сборку, проверять наличие классов, которые являются формами, и затем видеть, какие члены у них есть.
Код, который я использую для запроса сборок:
Assembly testAssembly = Assembly.LoadFile(assemblyPath);
Type[] types = testAssembly.GetTypes();
textBox1.Text = "";
foreach (Type type in types)
{
if (type.Name.StartsWith("Form"))
{
textBox1.Text += type.Name + Environment.NewLine;
Type formType = testAssembly.GetType();
Object form = Activator.CreateInstance(formType);
}
}
Я использую это для запроса стандартной формы:
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace TestForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
Моя проблемачто, когда код пытается Activator.CreateInstance(formType)
, я получаю исключение, заявляющее: "No parameterless constructor defined for this object."
Я также вижу из проверки formType, что 'DeclaringMethod:' formType.DeclaringMethod 'выдает исключение типа' System.InvalidOperationException ''
Я не понимаю сообщение об ошибке, так как форма имеет стандартный конструктор, я что-то упустил действительно очевидное?
РЕДАКТИРОВАТЬ: type.Name
показывает тип, который код пытается создать как Form1
.