私は、アセンブリをスキャンし、フォームであるクラスをチェックし、それらが持つメンバーを確認するアプリケーションを試してきました。
アセンブリのクエリに使用しているコードは次のとおりです。
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'' の例外をスローしたこともわかります」
フォームには標準のコンストラクターがあるため、エラー メッセージがわかりません。本当に明らかな何かが欠けていますか?
EDIT :type.Name
コードがインスタンス化しようとしている型を明らかにしますForm1
。