检查对象等于泛型类型

时间:2012-11-08 10:15:24

标签: c# .net typeof gettype generic-type-argument

我有一个进行某种类型转换的方法。如果类型等于传递的泛型类型,我不想完成整个过程。这是一个片段。

    public static T ConvertTo<T>(this object @this)
    {
        if (typeof(T) == @this.GetType())
            return (T)@this;
    }

我正在检查对象@this已经是T类型似乎有效,但这是最好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用IsInstaceOfType方法和is来检查类型。

public static T ConvertTo<T>(this object @this)
{
    if (@this is T)
       return (T)@this;
    else
       return default(T);
}

答案 1 :(得分:0)

这可能也有效

public static T ConvertTo<T>(this object @this)
{
    return (T)System.Convert.ChangeType(@this, typeof(T));
}