c# – 将T转换为bool,反之亦然

我有以下扩展方法,以便字符串能够执行此操作(“true”).作为< bool>(false)
特别是对于布尔值,它将使用AsBool()进行一些自定义转换.
不知怎的,我不能从T转向Bool,反之亦然.我使用下面的代码工作,但它似乎有点矫枉过正.

这是关于这一行:
(T)Convert.ChangeType(AsBool(value,Convert.ToBoolean(fallbackValue)),typeof(T))
我宁愿使用以下内容,但它不会编译:
(T)AsBool(value,(bool)fallbackValue),typeof(T))

我错过了什么或者这是最短的路要走?

public static T As<T>(this string value)
    {
        return As<T>(value,default(T));
    }
    public static T As<T>(this string value,T fallbackValue)
    {
        if (typeof(T) == typeof(bool))
        {
            return (T)Convert.ChangeType(AsBool(value,typeof(T));
        }
        T result = default(T);
        if (String.IsNullOrEmpty(value))
            return fallbackValue;
        try
        {
            var underlyingType = Nullable.GetUnderlyingType(typeof(T));
            if (underlyingType == null)
                result = (T)Convert.ChangeType(value,typeof(T));
            else if (underlyingType == typeof(bool))
                result = (T)Convert.ChangeType(AsBool(value,typeof(T));
            else
                result = (T)Convert.ChangeType(value,underlyingType);
        }
        finally { }
        return result;
    }
    public static bool AsBool(this string value)
    {
        return AsBool(value,false);
    }
    public static bool AsBool(this string value,bool fallbackValue)
    {
        if (String.IsNullOrEmpty(value))
            return fallbackValue;
        switch (value.ToLower())
        {
            case "1":
            case "t":
            case "true":
                return true;
            case "0":
            case "f":
            case "false":
                return false;
            default:
                return fallbackValue;
        }
    }

解决方法

您可以将其强制转换为object,然后转换为T:
if (typeof(T) == typeof(bool))
{
  return (T)(object)AsBool(value,Convert.ToBoolean(fallbackValue));
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...