我正在深入阅读C#,但我无法理解本章的段落
另一种方法——这一次已经存在于 .NET 1.1 中——值得探索的是
Type.GetType(string)
及其相关Assembly.GetType(string)
方法,这两种方法都提供了typeof
. 您可能希望能够将清单 3.11 输出的每一行提供给GetType
调用适当程序集的方法,但不幸的是,生活并不是那么简单。这对于封闭的构造类型来说很好——类型参数只是放在方括号中。但是,对于泛型类型定义,您需要完全删除方括号——否则GetType
会认为您的意思是数组类型。清单 3.12 展示了所有这些方法的作用。
在示例代码作者做了他要求不要做的事情,我相信:
string listTypeName = "System.Collections.Generic.List`1";
Type defByName = Type.GetType(listTypeName);
Type closedByName = Type.GetType(listTypeName + "[System.String]"); // did here ? , since he passed the listTypeName + [Type args] , so compiler should think it's array?
Type closedByMethod = defByName.MakeGenericType(typeof(string));
或者我可能弄错了,任何人都可以用例子详细说明他所说的“对于泛型类型定义,你需要完全删除方括号 - 否则GetType
认为你的意思是数组类型”