Могу ли я проверить, сопоставим ли объект какому-либо другому типу? - PullRequest
0 голосов
/ 19 мая 2011

Я хотел бы написать такой код:

if (obj.IsComparableTo(integer))
    Console.Write("successed");

Возможно ли это? Если нет, есть ли альтернативный способ определения этого?

Ответы [ 4 ]

2 голосов
/ 19 мая 2011

В зависимости от того, что вы подразумеваете под сопоставимым, может быть:

var comparable = obj as IComparable<int>;
if(comparable != null) Console.Write("successed");

Однако это касается только интерфейса, что было бы редко.Большинство неявных преобразований будет сложнее проверить.Если вы добавите больше контекста, возможно, будет легче найти более подходящее решение.

1 голос
/ 19 мая 2011

Невозможно сравнить два разных типа объектов, если они не реализуют интерфейс IComparable.

1 голос
/ 19 мая 2011

Ваш объект должен реализовать интерфейс IComparable<int>

public class Foo : IComparable<int>
{
}
0 голосов
/ 24 мая 2011

я нашел это:

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