首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在3层解决方案中使用抽象类?

如何在3层解决方案中使用抽象类?
EN

Stack Overflow用户
提问于 2012-02-01 23:49:12
回答 1查看 783关注 0票数 0

我最直接的问题是,目前我有一个3层的解决方案(Presentation.aspx.vb调用BusinessLayer.vb,后者调用DataAccessLayer.vb)。但是,我想让BusinessLayer和DataAccessLayer.vb抽象类,因为几个Webforms将使用具有相同的功能。

所以我目前正在做这件事(没有抽象类):

代码语言:javascript
复制
'Presentation Layer (pseudocode)

public sub checkUser(byval userName as string, byval dept as string)

   dim isGood as boolean = BL.checkUserAccess(userName, dept)

   'some more code
   'change properties of webcontrols, etc

end sub



'Business Layer (pseudocode)

public function checkUserAccess(byval name as string, byval group as string) as boolean

   dim accessObject as dataObject =  DAL.checkPermissions(name, group)

   if accessObject.isHighAccess then
      'some code
   else
      'some other code      
   end if 

end function



'Data Access Layer (pseudocode)

public function checkPermissions(byval userid as string, byval section as string) as dataObject

   'some code

end function

但是,如果我添加抽象类,我还能拥有这种结构吗?

例如:

代码语言:javascript
复制
'Presentation Layer (pseudocode)

public sub checkUser(byval userName as string, byval dept as string)

   dim isGood as boolean = instOne_BL.checkUserAccess(userName, dept)

   'some more code
   'change properties of webcontrols, etc

end sub



'Business Layer (pseudocode)

public class instOne_BL inhertis BL

   public function checkUserAccess(byval name as string, byval group as string) as boolean

      base.checkUserAccess(name, group)
      instOne_DAL.checkPermissions(name, group)

   end function
end class      


'Data Access Layer (pseudocode)

public class instOne_DAL inherits DAL

   public function checkPermissions(byval userid as string, byval section as string) as dataObject

      base.checkPermissions(userid, section)

   end function
end class
EN

回答 1

Stack Overflow用户

发布于 2012-02-02 01:32:25

如果您使用.Net远程处理作为层之间的通信层,那么这完全没有问题(就像在当前层中调用另一个类中的方法一样)。

如果您使用WCF,那么这也将工作,购买您需要做更多的工作。基类/抽象类必须用您期望传递的所有继承类的KnownType属性进行修饰。

如果您使用web服务,那么如果不玩一些游戏,这是不可能的。例如,您需要使用二进制序列化程序将对象序列化为字符串,然后在另一端反序列化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9098824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档