我想檢查是否有一個接口,我不知道我正在以正確的方式去做。我有我要檢查對底層的接口:鑄造到繼承接口
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>
,所以我不想明確地轉換爲類型,而是接口。
這是神奇的,謝謝。這似乎是其中一個應該可能與協變,我知道是在4.0引入的事情,但我不知道。有關out的更多信息:http://msdn.microsoft.com/en-us/library/dd469487.aspx如果其他人感興趣。 – Mark