转换为通用类型

阿里·乔科耶夫

我在C#中具有以下属性:

public T Value
{
    get
    {
        ClassImNotAllowedToChange.GetValue<T>();
    }
    set
    {
        ClassImNotAllowedToChange.SetValue<T>(value);
    }
}

由于某些原因,我无法更改的实现ClassImNotAllowedToChange,这可能会对我的代码部分施加一些限制。这里的问题是我想保存并读取TimeSpan为秒数,转换为int尽管我可以轻松编写任何内容setter,但getter限制了我只能使用泛型类型T,这使得这样的事情变得不可能:

get
{
    if (typeof(T) == typeof(TimeSpan))
        return (T)TimeSpan.FromSeconds(ClassImNotAllowedToChange.GetValue<int>());

    return PlcItem.GetValue<T>();
}

没有从int到的隐式转换TimeSpan,因此第一个代码清单导致InvalidCastExceptionin in runtime。是否有任何变通办法可以转换intTimeSpan内部,getter还是最好找到另一种实现方式?

大师斯特隆

作为解决方法,您可以先投射然后再投射TimeSpan.FromSeconds(具有相应的性能指标):objectT

get
{
    if (typeof(T) == typeof(TimeSpan))
        return (T)(object)TimeSpan.FromSeconds(ClassImNotAllowedToChange.GetValue<int>());

    return PlcItem.GetValue<T>();
}

但是我建议您以某种方式对您的代码进行重做,因此您无需这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

转换为通用类型

来自分类Dev

向下转换为通用类型

来自分类Dev

动态转换为通用类型

来自分类Dev

向下转换为通用类型

来自分类Dev

在Java中动态转换为通用类型

来自分类Dev

F#:强制转换为通用类型

来自分类Dev

从字符串转换为通用类型

来自分类Dev

快速转换为通用类类型

来自分类Dev

转换为通用类型并调用doubleValue()方法

来自分类Dev

F#:强制转换为通用类型

来自分类Dev

转换为通用基本类型

来自分类Dev

Scala强制转换为通用类型(用于通用数值函数)

来自分类Dev

将通用类型推断/转换为具体类型

来自分类Dev

是否将通用类型参数转换为原始类型的Object?

来自分类Dev

在C#中将通用类型参数转换为特定类型

来自分类Dev

通用类型错误:实例无法转换为自己的类型?

来自分类Dev

将未知类型的列表转换为通用列表类型

来自分类Dev

将具体的实现类型转换为通用接口类型

来自分类Dev

从通用类型转换为具体类型的最干净方法

来自分类Dev

是否将通用类型参数转换为原始类型的Object?

来自分类Dev

Swift:将通用类型转换为相同的通用类型,但具有关联类型的子类

来自分类Dev

将haskell记录插入函数转换为更通用的类型

来自分类Dev

无法将委托转换为通用类型T

来自分类Dev

将通用参数转换为原始数据类型

来自分类Dev

将对象强制转换为通用类型失败

来自分类Dev

将通用类型T转换为Class <T>

来自分类Dev

如何将类型A <T>的通用对象转换为A <T'>?

来自分类Dev

C#-将EventArgs转换为通用事件类型

来自分类Dev

在运行时将对象转换为通用类型