为什么以下会产生编译器错误:

public interface OwnSession : ISession { }

[...]
OwnSession s = SessionFactory.OpenSession(); // compiler error (in german unfortunately)
[...]

“SessionFactory”在“OpenSession()”(NHibernate)上返回“ISession”

最佳答案

我猜是因为 OwnSession 可能是一个比 ISession 更大/不同的界面?

想象一下,如果 OwnSession 从 ISession 继承,但还添加了另一个方法签名..那么 SessionFactory.OpenSession 方法返回的 ISession 将与 OwnSession 定义的契约匹配(或者它可以,但不一定,取决于返回的实际具体类型.. . 编译器不知道)

关于C#接口(interface)继承(基本),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2432773/

10-12 18:57