Ant*_*ler 4 c# inheritance .net-2.0
为什么以下产生编译器错误:
public interface OwnSession : ISession { }
[...]
OwnSession s = SessionFactory.OpenSession(); // compiler error (in german unfortunately)
[...]
Run Code Online (Sandbox Code Playgroud)
"SessionFactory"在"OpenSession()"(NHibernate)上返回"ISession"
Phi*_*ert 10
您应该投射结果:
OwnSession s = (OwnSession) SessionFactory.OpenSession();
Run Code Online (Sandbox Code Playgroud)
如果OpenSession()返回一个ISession类型,它可能是实现ISession的任何东西,所以你必须告诉编译器你期望一个OwnSession类型(只有当你确定它会返回那个当然)
另一方面,您可以将变量声明为ISession,并继续使用它.除非您想使用OwessSession类型中的方法或属性,这些方法或属性在ISession接口规范中不可用.
返回的对象只是"ISession",它不是"OwnSession"(顺便说一下,你应该用I:IOwnSession作为前缀).想象一下,你有一个函数返回一个汉堡,你不能把它作为一个cheesburger,因为它可能不是一个...
归档时间: |
|
查看次数: |
279 次 |
最近记录: |