如何检查T对象的类型?

时间:2014-10-06 14:22:52

标签: c# .net generics

我有一个功能。

protected Boolean MainFunction<T>(T objectData, string Id, out string Value)
{
    //here I need to check whether T equal the object I need or not 
}

以上MainFunctionFunction1Function2调用,我传递MyObject1MyObject2

我想在T objectData内检查MyObject1MyObject2MainFunction还是public bool Function1(string ID, out string Value, out ErrorReport error) { return MainFunction(Data.MyObject1, ID, out Value, out error); } public bool Function2(string ID, out string Value, out ErrorReport error) { return MainFunction(Data.MyObject2, ID, out Value, out error); } 。请给我任何建议。

{{1}}

1 个答案:

答案 0 :(得分:0)

首先,请确保您不要将泛型用于非常规的事情,因为它看起来不错或重复删除代码。如果是这种情况,请继续。

其次,您可以使用is检查类型是否与您需要的类型匹配:

if (objectData is MyObject1)
{
    ...
}
else if (objectData is MyObject2)
{
    ...
}

如果您可以控制类型,您还可以使用基类并使用通用约束来缩小T类型的范围:

Boolean MainFunction<T>(T objectData, string Id, out string Value) where T : BaseClass
{
}