2
我正在嘗試使用T4生成一系列泛型類的代碼。具有泛型參數的類的名稱?
我想知道如何使用反射來獲得完整的類名?
public class Foo<TFirst, TSecond> {}
var type = typeof(Foo<,>);
var name = type.FullName; // returns "Foo`2"
我要的是全名與實際泛型參數的名字,我已經寫了
"Foo<TFirst, TSecond>"
注意,它們是未知的類型,因爲我說我使用T4生成代碼,所以我想要確切的命名,以便在代碼生成中使用它,例如,在泛型方法中。
我試過this answers但他們需要通過已知類型,這不是我想要的。
您似乎需要使用'arg.Name'而不是'arg.FullName',因爲示例代碼中的'arg.FullName'返回'null'(而'arg.Name'返回正確的名稱)。 – Evk
@Evk:感謝您的發現。我最初嘗試使用'arg.Name',並認爲當我編寫它時,我會將其更改爲'arg.FullName',以提供System.String/System.Int32示例。現在會修復! –
噢,謝謝,我試過'string.Join(「,」,type.GetGenericArguments()。Select(t => t.FullName))',但是因爲我使用的是FullName,所以它返回null。 –