从代码中我们如何知道一个类实现哪些接口?
例:
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
因为没有人提到它,你可以使用is运算符:
if (myObject is IEat)
//It looks like food
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |