【发布时间】:2010-07-01 14:22:21
【问题描述】:
嗨, 我有以下场景,我将尽我所能解释,如果这是一个愚蠢的问题,请提前道歉。 我有两个接口(出于本示例的目的,其中没有任何内容)
public interface interfaceA {}
public interface interfaceB: interfaceA {}
还有2个班
public classA<interfaceA> {}
public classB: classA<interfaceB> { }
现在在其他地方我也有一个接受泛型类型作为参数的方法:
public static void DoSomething( ClassA<interfaceB> p_val ) {}
好的,然后我在创建对象时使用这些类。
ClassB obj1 = new ClassB();
ClassA<interfaceA> obj2 = new ClassA<interfaceA>();
当我现在将 obj1 传递给 DoSomething() 时,一切都很好,但是当我尝试将 obj2 传递给我的 DoSomething() 方法时,我收到一个编译错误,说它无法从 interfaceA 转换为 interfaceB。
这是有道理的,因为在我的方法中,泛型参数类型显式地是 interfaceB。但是,如果我希望该方法同时接受泛型类型(obj1 和 obj2),我该怎么办?希望这是有道理的。
【问题讨论】:
-
接口在哪里使用?您能否使用代码标记使您的代码更具可读性?
标签: c#