|
コメントありがとうございます。
■No67540 (魔界の仮面弁士 さん) に返信
> ■No67538 (あいざっく さん) に返信
>>public class Main
>>{
>> public void Main()
>> {
> クラス名と同じ名前のメソッドは作れません(VBでは可能)。
> それに Main メソッドなら、通常は static ですよね。
大変失礼しました orz
確かにその通りです。いい加減な説明コードで申し訳ありません。
>> public int hoehoe(IEnumarable<T> p)
> IEnumerable<T> ではなく?
はい、ご指摘の通り説明コードの綴りミスです。
実際の開発コードでは IEnumerable になっております。
>>throw (new ArgumentNullException(string.Format("'{0}'型のパラメタpがnullです。", t.Name)));
> 型パラメータの情報も必要な場合は、GetGenericArguments も併用してみてください。
>
>
>>例えばIDictionary<int, string>型の名前を
> 「List<IDictionary<int, IEnumerable<int>>>」なんて事も。
教えていただいた GetGenericArguments を使用して型の名前を取得するメソッドを組んでみました。
private static string GetImplementedTypeName(Type type)
{
if (!type.IsGenericType)
return (type.Name);
if (type.IsGenericTypeDefinition)
return (type.Name);
string parameter_names = string.Join(",", (from t_arg in type.GetGenericArguments() select t_arg.Name));
return (string.Format("{0}<{1}>", type.Name, parameter_names));
}
このメソッドに typeof(IEnumerable<string>) を渡すと "IEnumerable`1<string>" が返り、"IEnumerable" でなく "IEnumerable`1" が返る部分以外は期待通りです。
"IEnumerable" という名前を取得する素直な方法がなさげなので、他にいい方法がなければこれで行こうかなと思います。
コメントしてくださった方々、ありがとうございました。
|