Как определить, совместимы ли типы двух объектов? - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть общая функция, которую я хочу знать, как писать.

List<Something> something;

public int countItems<T>(List<T> Items)
{
    // Here I would like to compare the type of "Items" with the type of "something" to see if they are compatible. How do I do it?
    return 0;
}

Ответы [ 4 ]

9 голосов
/ 18 апреля 2011

Вы имеете в виду:

if(typeof(T) == typeof(Something)) {...}

?

Обратите внимание, что наличие дженериков сильно зависит от Т (и действуют по-другому), может означать, что то, что вы пытаетесь сделать, на самом деле не очень универсальный ...

0 голосов
/ 22 октября 2017

Вопрос плохо сформулирован и более чем немного расплывчат, но это может сделать это:

using System.Linq;

public int countItems<T>(List<T> Items)
{
    return Items.OfType<Something>().Where(thing => thisOneCounts(thing)).Count();
}
0 голосов
/ 18 апреля 2011
if (something.GetType() == items.GetType()) ...

Здесь будут сравниваться типы реальных объектов.

0 голосов
/ 18 апреля 2011

Я думаю, что вы хотите использовать интерфейс IComparable .

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

...