标签: iconvertible

找不到类型或命名空间名称"IConvertible"

我正在尝试实现IConvertible进行自定义转换.我正在使用.NET便携式,似乎它在那里不可用.但是MSDN文档说:

可移植类库
受支持:可移植类库

我有点担心这也出现了:

此API不符合CLS.

这就是它可能无法解决的原因吗?根据文档,它应该是System命名空间的一部分.我试图在结构中实现接口.

有点像:

public struct ABC: Blah<Demo>, IConvertible 
{}
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,我错过了一些非常小的东西.
更多信息:我的目标是.NET Framework 4.5和Windows 8.

c# iconvertible portable-class-library

8
推荐指数
1
解决办法
1369
查看次数

如何检查两种类型是否可以比较,总结等?

如果给出两种类型(类型a,类型b),是否有任何"好"的方法来确定这两个是否可以进行比较,求和等?

我在想如果类型实现IConvertible,可以将两者都转换成让我们说十进制并执行" Convert.ToDecimal(a) > Convert.ToDecimal(b)"?

我正在构建一个表达式求值程序,并希望能够处理任何类型的对象,因此需要知道一个类型是否可以与另一个类型进行比较(它不必在两侧都是相同的类型.例如.double > int)

c# iconvertible

7
推荐指数
1
解决办法
346
查看次数

为什么Convert.ChangeType采用对象参数?

Convert自.NET 1.0级已经存在.IConvertible从那时起,界面也存在.

Convert.ChangeType方法适用于实现类型的对象IConvertible(事实上​​,除非我弄错了,否则类提供的所有转换方法Convert都是这样的).那么为什么参数类型object呢?

换句话说,而不是这样:

public object ChangeType(object value, Type conversionType);
Run Code Online (Sandbox Code Playgroud)

为什么签名不是这个?

public object ChangeType(IConvertible value, Type conversionType);
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很奇怪.

.net changetype iconvertible

7
推荐指数
1
解决办法
2588
查看次数

当返回类型是通用接口时,如何将对象强制转换为泛型返回类型?

我有一个非常丑陋的方法,它应该从数据库中提取各种数据,并使用它构造一个请求类型的对象.目标是将各种丑陋归结到一个地方,以便从包含此方法的类派生的类可以相对干净.

当它应该返回单个对象时,即使类型可以为空,我也没有问题:

protected T getValue<T>(ParameterObject myParameterObject)
{
    var typeOfT = typeof (T);

    if (typeOfT == typeof(bool))
    {
        string val = this.getValue(myParameterObject);

        if (val == null)
            return default(T);

        bool rVal;
        if (!Boolean.TryParse(val, out rVal))
            return default(T);

        return changeType<T>(rVal);
    }

    if (typeOfT == typeof (double?))
    {
        string val = this.getValue(myParameterObject);

        if (val == null)
            return default(T);

        double rVal;
        if (!Double.TryParse(val, out rVal))
            return default(T);

        return changeType<T>(rVal);
    }

    [...]
}

public static T changeType<T>(object value)
{
    var t = typeof(T);
    if (!t.IsGenericType || …
Run Code Online (Sandbox Code Playgroud)

c# generics iconvertible

6
推荐指数
1
解决办法
572
查看次数

使用带有 TypeNameHandling-flag 的 Json.NET 序列化具有 IConvertible 值的字典

我有以下字典,我非常想使用 Json.Net 序列化它。字典包含IConvertible接口的项目,允许我将所需的任何原始类型添​​加到字典中。

    var dic = new Dictionary<string, IConvertible>();
    dic.Add("bool2", false);
    dic.Add("int2", 235);
    dic.Add("string2", "hellohello");
Run Code Online (Sandbox Code Playgroud)

我有以下使用 Json.net 序列化列表的实现:

    var settings = new JsonSerializerSettings();
    settings.TypeNameHandling = TypeNameHandling.Objects;
    var dicString = JsonConvert.SerializeObject(dic,    Newtonsoft.Json.Formatting.Indented, settings);
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

    {
      "$type": "System.Collections.Generic.Dictionary`2[[System.String,         mscorlib],[System.IConvertible, mscorlib]], mscorlib",
      "bool2": false,
      "int2": 235,
      "string2": "hellohello"
    }
Run Code Online (Sandbox Code Playgroud)

然而。当尝试这样反序列化时:

    var dic2 = JsonConvert.DeserializeObject<Dictionary<string, IConvertible>>(dicString);
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误:

    Error converting value False to type 'System.IConvertible'. Path 'bool2', line 3, position 16.
Run Code Online (Sandbox Code Playgroud)

我环顾四周,发现了以下内容;但设置 typeNameHandling 并没有解决问题。我也不能用IConvertible类型名称属性来装饰该值,因为它是一个字典。

在 JSON.NET 中转换用于反序列化的接口

我还没有找到有关该主题的任何其他信息,因此我们将不胜感激!

我也找到了这个解决方案,但它涉及创建一个 ExpandableObjectConverter 这不是一个非常优雅的解决方案。 …

c# json json.net iconvertible jsonconvert

5
推荐指数
1
解决办法
1445
查看次数

错误:对象必须实现IConvertible

当我得到以下错误时,我试图将每个列表框项的列表框项和文本框值插入到数据库中.

如果我尝试插入列表框项目只有我成功,但当我尝试插入文本框值时,我得到此错误.你能告诉我我做错了吗?

Error Message: Object must implement IConvertible.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Object must implement IConvertible.

Source Error:

Line 60: 
Line 61:             
Line 62:             cmd.ExecuteNonQuery();
Line 63: 
Line 64: 

c#CODE

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls; …
Run Code Online (Sandbox Code Playgroud)

c# iconvertible

4
推荐指数
2
解决办法
5万
查看次数

IConvertible接口如何与DataRow配合使用?

我只是想知道Convert类和IConvertible接口是如何工作的DataRow.如果我有这个代码:

string s="25";
int x= Convert.ToInt32(s);
Run Code Online (Sandbox Code Playgroud)

调用Convert.ToInt32(s)将运行以下内容:

((IConvertible)s).ToInt32()
Run Code Online (Sandbox Code Playgroud)

那么如何使用这样的代码行:

Convert.ToInt32(myDataRow["intField"]);
Run Code Online (Sandbox Code Playgroud)

当DataRow和对象都没有实现IConvertible?

.net c# datarow iconvertible

4
推荐指数
1
解决办法
2368
查看次数

为什么.Net Framework基类型不包含IConvertible方法的实现?

.Net Framework基类型,如Int32,Int64,Boolean等.实现IConvertible接口但是这些类型的所述元数据不包含在IConvertible接口中定义的方法,如ToByte,ToBoolean等的实现,.

我试图理解为什么基类型没有方法实现,即使它们实现了IConvertible接口.有人可以帮忙吗?

.net c# iconvertible

4
推荐指数
1
解决办法
257
查看次数

LinqToExcel - 导致Object的InvalidCastException必须实现Iconvertible错误

我正在使用以下代码查询LinqToExcel中的excel文件:

var excelFile = new LinqToExcel.ExcelQueryFactory(@"\"+txtFileName.Text.Replace(@"\\",@"\"));

var properties = from p in excelFile.Worksheet<Property>()
                 where AssessmentID != null
                 select p;
foreach (var autoP in properties)
        doSomething();
Run Code Online (Sandbox Code Playgroud)

当我查看运行时调试器时,我会在查看属性变量的"结果视图"时看到"InvalidCastException" .所以,我假设我的班级定义有一些时髦的东西.我还假设我不需要将类的所有成员映射到excel文件,而只需要我认为合适的那些.
所以,这里也是类定义:

public class Property
{

    [DataMember]
    public int? Year { get; set; }

    [DataMember]
    public string ChangeReason { get; set; }

    [DataMember]
    public string AssessmentID { get; set; }

    [DataMember]
    public string CallBackNotes { get; set; }

    [DataMember]
    public string InspectionNotes { get; set; } 

    [DataMember]
    public string Notes { get; …
Run Code Online (Sandbox Code Playgroud)

excel iconvertible linq-to-excel visual-studio-2015

4
推荐指数
1
解决办法
858
查看次数

有效的GUID字符串提供从"System.String"到"System.Guid"的无效转换

我正在运行以下代码:

var guidStr = "C105534D-E001-46F1-874A-322E5E0E132C";
var guid1 = Guid.Parse(guidStr);
var guid2 = Convert.ChangeType(guidStr, typeof(Guid));
Console.WriteLine(guid1 + " " + guid2);
Run Code Online (Sandbox Code Playgroud)

虽然guid1得到一个值很好,但guid2行引发异常:

Invalid cast from 'System.String' to 'System.Guid'.
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)
Run Code Online (Sandbox Code Playgroud)

有什么不同?

不幸的是我使用的dll是第二次解析失败的给定,所以不能真正改变实现,只有我的输入.

c# guid typeconverter changetype iconvertible

0
推荐指数
1
解决办法
1884
查看次数