我想写一些这样的代码:
if (obj.IsComparableTo(integer))
Console.Write("successed");
这可能吗?如果没有,是否有另一种方法来确定这一点?
我想写一些这样的代码:
if (obj.IsComparableTo(integer))
Console.Write("successed");
这可能吗?如果没有,是否有另一种方法来确定这一点?
根据您所说的可比性,可能是:
var comparable = obj as IComparable<int>;
if(comparable != null) Console.Write("successed");
但是,这仅考虑了接口,这很少见。大多数隐式转换将更难检查。如果您添加更多上下文,也许更合适的解决方案将更容易发现。
您的对象必须实现接口IComparable<int>
public class Foo : IComparable<int>
{
}
IComparable
除非它们实现了接口,否则无法比较两种不同类型的对象。
我找到了:
public bool isComparable<t>(object o)
{
try
{
object r = (t)o;
}
catch
{
return false;
}
return true;
}
使用它:
if (isComparable<int>(32).ToString())
Console.WriteLine("success");
else
Console.WriteLine("fail");