类中的方法都是静态的,并且访问属性是public.
public class A{public static void Hello(){}}
public class B:A{}
在别的地方,使用class B可以访问到Hello方法。
进一步继承
public class C:B{}
在C中可以访问到Hello方法,但是在外部,比如WEB站点添加,引用访问不到Hello方法。
是否多级继承的设计?希望能找到官方的解释。
-----------------------
一开始我也是坚信没有问题,使用C.Hello是可以出来的。
贴代码:
这个是在类库BLL中。
public class A : Repository<UserProfileInfo> { public static void Hello() { } } public class B:A{ } public class C:B{ }
public class Repository<T> :QueryPage<T> where T : Pager { }
public class QueryPage<T> where T: Pager { public static int Insert(T item) { return 0; } }
现在BLL中使用C.Insert是可以的。
但是在WEB中添加对BLL引用后,只可以打出C.Hello,而打不出C.Insert
-----------------------------------
public class A { public static void Hello() { } } public class B:A{ } public class C:B{ }
如果直接这样是可以的。
可以访问的
表现已经写的很清楚了,在C中是不可以访问到Hello方法的。
@lucika.zh: 具体 贴代码或者截图,应该是可以的
理论上可以访问,建议你贴代码~
实际上不可以。
@lucika.zh: 怎么会不可以~你引用搞错了吧。
@幻天芒: 贴出了代码。谢谢!
@lucika.zh: 这代码让我看得更迷糊~
@幻天芒: 我只看代码,同样我认为是可以引用到的。只是亲身体验才知道。在类C或者A中是可以引用到Insert方法的。
什么是 WEB站点添加
就是在项目中添加对类库的引用
@lucika.zh: 如果你是添加DLL引用那是可以的,如果你用C.不出来.你用A.看能不出来.
C出来A也是出不来的.这个就得找其它原因了.而不是继承的问题.如果C.不出来A却能.出来.你的论点就对了
@吴瑞祥: 我已经贴出代码了,谢谢!
三层架构中,如果你BLL 和DAL,UI界面的相互间引用没有弄好,你自己会看不出的,你贴的代码页有点乱,看不清楚问题所在。
C.Hello是正常的,但C.Insert方法确实未定义。
如果结构是这样的:
public class A { public static void Hello() { } } public class B:A{ } public class C:B{ }
C.Hello同样是可以使用的。唯一不同的是A类继承了泛型类Repository<UserProfileInfo>