c#

位置:IT落伍者 >> c# >> 浏览文章

.Net Framework 2.0范型的反射使用[2]


发布日期:2021年02月19日
 
.Net Framework 2.0范型的反射使用[2]

> 还是是范型的标志

SystemString mscorlib Version= Culture=neutral PublicKeyToken=bace >是string类型的FullName

SystemInt mscorlib Version= Culture=neutral PublicKeyToken=bace >是int类型的FullName

从上面的例子可以看出范型的类型和时增加了两个部分分别是范型的标识部分和范型的参数类型FullName部分

首先看一下标志部分 `和`猜测`标识了该类型是范型后面的数字部分是说明了该范型需要几个范型参数

现在还是猜测下面根据猜测来应用我们自己的反射试验一下吧

范型反射的试验

看看下面的代码

string tlistStr = SystemCollectionsGenericList`[SystemString];

Type tList = TypeGetType(tlistStr);

Object olist = SystemActivatorCreateInstance(tList);

MethodInfo addMList = tListGetMethod(Add);

addMListInvoke(olist new object[] { zhx });

ConsoleWriteLine(olistToString());

SystemConsoleWriteLine();

string tDicStr = SystemCollectionsGenericDictionary`[[SystemString][SystemInt]];

Type tDic = TypeGetType(tDicStr);

Object oDic = ActivatorCreateInstance(tDic);

MethodInfo addMDic = tDicGetMethod(Add);

addMDicInvoke(oDic new object[] {zhx });

ConsoleWriteLine(oDicToString());

SystemConsoleWriteLine();

测试通过不过大家要注意了范型中的基础类型如stringint不能使用简写的如果把 SystemCollectionsGenericList`[SystemString] 写成 SystemCollectionsGenericList`[string]是不能够得到正确类型的

[] [] []

               

上一篇:.Net Framework 2.0范型的反射使用[1]

下一篇:.Net Framework 2.0范型的反射使用[3]