哪个接口一个类实现?

Dry*_*ods 3 c# asp.net

从代码中我们如何知道一个类实现哪些接口?

例:

interface IDrink
interface IEat

class Milk : IDrink    
class Water: IDrink    
class Potato: IEat
Run Code Online (Sandbox Code Playgroud)

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

.

使用此:

我有一个接收一个" object myObject"的方法,我需要看看是否将它转换为IDrink或IEat.

Vin*_*jip 10

您可以强制转换它(可能会抛出异常)或使用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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

无论有多少接口o实现 - 在这里你只是感兴趣,如果它是一个IDrink.如果要获得完整列表,则必须使用reflection(System.Reflection):

Type [] interfaces = myObject.GetType().GetInterfaces();
Run Code Online (Sandbox Code Playgroud)

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


Moa*_*ini 7

因为没有人提到它,你可以使用is运算符:

if (myObject is IEat)
   //It looks like food
Run Code Online (Sandbox Code Playgroud)