在java中,我可以这样做:
public class A {
//...
}
public class B extends A {
//...
}
public interface I {
void test(A a);
}
public class C implements I {
//i can use class B as parameters in java but how to do in .net ?
// not work in .net
@override
public void test(B b){
}
}
我可以在B中使用B类作为参数,但在.net中怎么做?
答案 0 :(得分:0)
为了实现接口成员I.test(A a)
,test()
的{{1}}方法必须是公共的,非静态的,并且与接口成员具有相同的名称和签名。
C
无法使用一个标准:它与C.test
的签名不同。
I.test
当然,您仍然可以将public class A {
//...
}
public class B extends A {
//...
}
public interface I {
void test(A a);
}
public class C implements I {
public void test(A a){
}
}
个实例传递到B
:
C.test
说明var b = new B();
var c = new C();
c.test(b);//works just fine
中I
的实施取决于C
上的属性,而不是B
上的属性。进一步假设只要传入的参数扩展A
,I.test
是一种完全有效的写入方法是有意义的。
在这种情况下,你可以尝试这样的事情:
A
利用generics以及generic type constraints,似乎可能会更接近你想要表达/完成的内容。