相关疑难解决方法(0)

通用TryParse

我正在尝试创建一个通用扩展,使用'TryParse'来检查字符串是否是给定类型:

public static bool Is<T>(this string input)
{
    T notUsed;
    return T.TryParse(input, out notUsed);
}
Run Code Online (Sandbox Code Playgroud)

这将无法编译,因为它无法解析符号'TryParse'

据我了解,'TryParse'不是任何界面的一部分.

这有可能吗?

更新:

使用下面的答案,我想出了:

public static bool Is<T>(this string input)
{
    try
    {
        TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
    }
    catch
    {
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

它运作得很好,但我认为以这种方式使用异常对我来说感觉不对.

UPDATE2:

修改为传递类型而不是使用泛型:

public static bool Is(this string input, Type targetType)
{
    try
    {
        TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
        return true;
    }
    catch
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics tryparse

191
推荐指数
7
解决办法
7万
查看次数

如何获取已定义文本的类型

我可以在C#中这样做:

string str="string";
Type typ=typeof(str);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我创建通用类型转换器而无需多个条件

.net c# visual-studio-2010

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

标签 统计

c# ×2

.net ×1

generics ×1

tryparse ×1

visual-studio-2010 ×1