2011-05-19 5 views
0

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?

+0

@Marc Gravell: Je dois vérifier cmb.Tag est-il une façon plus optimale? – Mohsen

+0

que voulez-vous dire par 'cmb.Tag' ici? –

Répondre

-2

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"); 
2

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.

+0

var comparable = combo1.tag comme IComparable ; si (comparable! = Null) Console.Write ("successed"); ne fonctionne pas pour moi – Mohsen

+0

@Moshen - bien, étant donné que vous ne nous avez pas dit ce que «obj» est, ou quels scénarios vous devez couvrir par «comparables» ... –

1

objet Vous doit implémenter l'interface IComparable<int>

public class Foo : IComparable<int> 
{ 
} 
1

Il est impossible de comparer les deux types d'objets différents à moins qu'ils mettent en œuvre l'interface IComparable.

Questions connexes