从代码我们如何知道一个类实现了哪些接口(interface)?

例子:

interface IDrink
interface IEat

class Milk : IDrink
class Water: IDrink
class Potato: IEat

我想知道 Potato 是否实现了 IDrink。我该怎么做?

.

使用:

我有一种方法可以接收一个“object myObject”,我需要看看我是否将它转换为 IDrink 或 IEat。

最佳答案

您可以转换它(这可能会引发异常)或使用 as 运算符。

private void DrinkIt(Object o) {
    IDrink possibleDrink = o as IDrink;

    if (possibleDrink == null)
        Console.WriteLine("Not a drink!");
    else {
        ChugItDown(possibleDrink);
        Console.WriteLine("That hit the spot!");
    }
}
o 实现了多少接口(interface)并不重要 - 在这里你只对它是 IDrink 感兴趣。如果你想得到一个完整的列表,你必须使用反射( System.Reflection ):
Type [] interfaces = myObject.GetType().GetInterfaces();

当然,myObject 不应该是 null - 因为 null 没有类型。然后您可以检查 interfaces 是否包含 IDrinkIEat 等。

关于c# - 一个类实现哪些接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1384357/

10-13 06:45