Je voudrais écrire un code comme ceci:Puis-je vérifier si un objet est comparable à un autre type?
if (obj.IsComparableTo(integer))
Console.Write("successed");
Est-ce possible? Sinon, existe-t-il une autre façon de déterminer cela?
Je voudrais écrire un code comme ceci:Puis-je vérifier si un objet est comparable à un autre type?
if (obj.IsComparableTo(integer))
Console.Write("successed");
Est-ce possible? Sinon, existe-t-il une autre façon de déterminer cela?
je l'ai trouvé:
public bool isComparable<t>(object o)
{
try
{
object r = (t)o;
}
catch
{
return false;
}
return true;
}
à utiliser:
if (isComparable<int>(32).ToString())
Console.WriteLine("success");
else
Console.WriteLine("fail");
Selon ce que vous entendez par comparable, peut-être:
var comparable = obj as IComparable<int>;
if(comparable != null) Console.Write("successed");
Cependant, cela ne représente pour l'interface, ce qui serait rare. La plupart des conversions implicites seront plus difficiles à vérifier. Si vous ajoutez plus de contexte, une solution plus appropriée sera peut-être plus facile à repérer.
var comparable = combo1.tag comme IComparable
@Moshen - bien, étant donné que vous ne nous avez pas dit ce que «obj» est, ou quels scénarios vous devez couvrir par «comparables» ... –
objet Vous doit implémenter l'interface IComparable<int>
public class Foo : IComparable<int>
{
}
Il est impossible de comparer les deux types d'objets différents à moins qu'ils mettent en œuvre l'interface IComparable
.
@Marc Gravell: Je dois vérifier cmb.Tag est-il une façon plus optimale? – Mohsen
que voulez-vous dire par 'cmb.Tag' ici? –