Я пытаюсь проверить, является ли что-то интерфейсом, и я не уверен, что делаю это правильно. У меня есть базовый интерфейс, который я хочу проверить:
interface IName
{
string Name {get;}
}
У меня есть класс, который реализует этот интерфейс:
class Person : IName
{
public string Name {get;}
}
У меня тогда есть другой интерфейс:
interface IThing<T>
{
T Thing {get;}
}
Затем у меня есть другой класс, который реализует IThing:
class Teacher : IThing<Person>
{
public Person Thing {get;}
}
Что я хочу сделать, это:
Teacher teacher = new Teacher("Math", "John");
if (teacher is IThing<IName>)
{
Console.WriteLine((teacher as IThing<IName>).Thing.Name);
}
Однако это не работает. Я почти уверен, что не может понять, что IThing<Person>
это IThing<IName>
. Как мне это сделать? У меня есть несколько классов, которые реализуют IThing<BaseClassThatIsIName>
, поэтому я не хочу явно приводить к типу, а скорее к интерфейсу.