ros*_*dia 8 .net c# typeconverter
我遇到了一个与DecimalConverter和Int32Converter类有关的问题,它们似乎返回了不一致的结果,如下面的简单控制台程序所示:
using System;
using System.ComponentModel;
class App
{
static void Main()
{
var decConverter = TypeDescriptor.GetConverter(typeof(decimal));
Console.WriteLine("Converter: {0}", decConverter.GetType().FullName);
Console.WriteLine("CanConvert from int to decimal: {0}", decConverter.CanConvertFrom(typeof(int)));
Console.WriteLine("CanConvert to int from decimal: {0}", decConverter.CanConvertTo(typeof(int)));
Console.WriteLine();
var intConverter = TypeDescriptor.GetConverter(typeof(int));
Console.WriteLine("Converter: {0}", intConverter.GetType().FullName);
Console.WriteLine("CanConvert from int to decimal: {0}", intConverter.CanConvertTo(typeof(decimal)));
Console.WriteLine("CanConvert to int from decimal: {0}", intConverter.CanConvertFrom(typeof(decimal)));
}
}
Run Code Online (Sandbox Code Playgroud)
这个输出如下:
Converter: System.ComponentModel.DecimalConverter
CanConvert from int to decimal: False
CanConvert to int from decimal: True
Converter: System.ComponentModel.Int32Converter
CanConvert from int to decimal: False
CanConvert to int from decimal: False
Run Code Online (Sandbox Code Playgroud)
除非我不正确地理解TypeConverters,否则以下内容应该成立:
TypeDescriptor.GetConverter(typeof(TypeA)).CanConvertFrom(typeof(TypeB))
Run Code Online (Sandbox Code Playgroud)
应该给出相同的结果
TypeDescriptor.GetConverter(typeof(TypeB)).CanConvertTo(typeof(TypeA))
Run Code Online (Sandbox Code Playgroud)
至少在的情况下,System.Int32和System.Decimal,他们不这样做.
我的问题是:有人知道这是否符合设计要求?或者C#中的本机类型的TypeConverters是否真的坏了?
根据Int32Converter 的MSDN 文档...
此转换器只能在 32 位有符号整数对象与字符串之间进行转换。
我同意评论中的@svick,不过,我不明白为什么您需要首先通过 Int32 将 JSON 字符串反序列化为 Decimal。
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |