重複の可能性:
リフレクションによるオプションのパラメーターを持つメソッドの呼び出し
c# のコンストラクター引数の名前
現在、リフレクションを使用してオブジェクトを構築しています。これを使用して API ドキュメントに記入しています。多くの場合、デフォルト以外のコンストラクターが必要ですが、オプションのパラメーターがある場合もあります。これらのオプションのパラメーターは、デフォルト以外の新しいオブジェクトでオーバーライドする必要があります。問題は、それらを取得する方法がわからないことです。通常のパラメータはconstructorInfo.GetParameters()で簡単ですが、オプションは戻ってこないようです。ここで何か不足していますか?
サンプルコード:
ConstructorInfo[] constructorInfoList = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public);
foreach (ConstructorInfo constructorInfo in constructorInfoList)
{
var parameters = constructorInfo.GetParameters();
if (parameters.Count() > 0)
{
回答: 戻ってくることが判明しました... これはユーザー エラーです。
サンプル:
void Main()
{
var ctors = typeof(Foo).GetConstructors();
foreach(var ctor in ctors)
{
foreach(var param in ctor.GetParameters())
{
Console.WriteLine("Name: {0} Optional: {1}", param.Name, param.IsOptional);
}
}
}
public class Foo
{
public Foo(string option1, string option2 = "")
{
}
}
出力:
名前: オプション 1 オプション: False 名前: オプション 2 オプション: True