C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c#-4.0 – 通过将所需类型作为参数传递,从字符串值转换为特定类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用以下方法将字符串类型转换为泛型类型

public static T Parse<T>(string value)
{
    // or ConvertFromInvariantString if you are doing serialization
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}

我必须这样称呼它

Parse<Int32>(Some string value);
Parse<DateTime>(Some string value);

我正在尝试而不是明确地给出结果类型,我可以给它一样

Parse<Type.GetType("Int32")>(Some string value);

解决方法

仿制药在这里不在考虑范围内.主要问题是您尝试使用类型标识的快捷方式.类型的名称不仅仅是您在程序中使用的类型名称.它还包括声明它的名称空间,存储它的程序集的显示名称,程序集的版本号以及程序集强名称的公钥标记.换句话说,Type.AssemblyQualifiedName.

这要求您编写类似于此的代码

Parse(Type.GetType("system.int32,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089""),SomeStringValue);

这将工作得很好.但我猜你不会喜欢写这个.否则,可以让您深入了解编译器在程序中读取“Int32”时所执行的操作.它将在其符号表中查找已添加的引用程序集,并注意该表中可能存在的匹配项,考虑使用指令有效.

你必须在你的程序中实现类似的东西.编译器的符号表的等价物是Dictionary< string,Type>.您可以通过使用您希望使用短字符串名称的类型填充它来填充它.喜欢

LookupTable.Add("Int32",typeof(int));
  LookupTable.Add("String",typeof(string));
  // etc...

现在你可以写:

Parse(LookupTable["Int32"],SomeStringValue);

这将工作得很好.但我猜你不会喜欢写这个.很难击败编译器.

大佬总结

以上是大佬教程为你收集整理的c#-4.0 – 通过将所需类型作为参数传递,从字符串值转换为特定类型全部内容,希望文章能够帮你解决c#-4.0 – 通过将所需类型作为参数传递,从字符串值转换为特定类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: