友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VB2008从入门到精通(PDF格式英文版)-第141章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                  End Get 

              End Property 



              Public ReadOnly Property OneLeft() As SheetCoordinate 

                  Get 

                      Return New SheetCoordinate(Me。Row; (Me。Column 1)) 

                  End Get 

              End Property 



              Public ReadOnly Property OneRight() As SheetCoordinate 

                  Get 

                      Return New SheetCoordinate(Me。Row; (Me。Column + 1)) 

                  End Get 

              End Property 



          End Structure 



               In the declaration of SheetCoordinate; notice that Structure is used rather than Class。  

          We could have used a class; but SheetCoordinate serves the purpose of being a piece of data。  

          SheetCoordinate is a type where you store information that is used by another type。 A data type  

          might do some processing; but only to make it easier to manipulate the data。 For example;  

          notice how SheetCoordinate has properties to generate a new instance of SheetCoordinate that  

          might be one row higher or lower; or a column to the right or left。 

               The next step is to extend the worksheet definition and use  generics to define the  

          type of worksheet。 The following is the plete definition of the  IWorksheet。 These methods  


…………………………………………………………Page 319……………………………………………………………

                                                     CH AP T E R   1 1   ■    L E A R N IN G   AB O U T   。 N E T  G E N E R I CS 297 



are used to calculate the values of cells in the worksheet and work with the contents of individual  

cells (the state of those cells)。 We can also assign the function that carries out the calculation of  

a cell’s contents; using either a SheetCoordinate type or the row and column coordinates。 



Public Interface IWorksheet(Of BaseType) 

    Inherits IWorksheetBase 



    Sub AssignCellCalculation(ByVal coords As SheetCoordinate; _ 

        ByVal cb As Func(Of IWorksheet(Of BaseType); Integer; Integer; BaseType)) 



    Sub AssignCellCalculation(ByVal row As Integer; ByVal col As Integer; _ 

        ByVal cb As Func(Of IWorksheet(Of BaseType); Integer; Integer; BaseType)) 



    Sub AssignColCalculation(ByVal col As Integer; _ 

                             ByVal cb As Func(Of IWorksheet(Of BaseType); _  

                             Integer; Integer; BaseType)) 

    Sub Calculate() 



    Function Calculate(ByVal coords As SheetCoordinate) As BaseType 

     

    Function Calculate(ByVal row As Integer; ByVal col As Integer) As BaseType 



    Sub CalculateCol(ByVal col As Integer) 



    Sub CalculateRow(ByVal row As Integer) 



    Function GetCellState(ByVal coords As SheetCoordinate) As BaseType 



    Function GetCellState(ByVal row As Integer; ByVal col As Integer) As BaseType 



    Sub SetCellState(ByVal coords As SheetCoordinate; ByVal val As BaseType) 



    Sub SetCellState(ByVal row As Integer; ByVal col As Integer; _ 

                     ByVal val As BaseType) 



    ReadOnly Property Data() As BaseType (;) 

End Interface 



     The declaration of IWorksheet is as a  generics type; where BaseType is a  generics  

parameter that represents the type of the spreadsheet。 Since IWorksheet is a type of spreadsheet;  

it subclasses the IWorksheetBase interface; allowing IWorksheet to be part of a mixed collection  

of IWorksheet instances。 The IWorksheet interface is fairly plex and contains many methods。  

However; here we are focusing on the interface concept; rather than the individual methods。 

     Look at the bolded parts and notice how the interface is specific about the operations; but  

vague about the type used in the operations。 This is what you want to achieve when using   

generics。 You want to take a high…level approach and indicate which operations are available;  

but leave out the types being manipulated in the operations。 The types will be specified later by  

another programmer。 


…………………………………………………………Page 320……………………………………………………………

298        CH AP T E R   1 1   ■    L E A R N I N G   A B OU T   。 N E T  G E N E R I CS 



           ■Note  The technique of having a  generics type (such as IWorksheet) subclass a non… generics  

           type (such as  IWorksheetBase) allows you to identify the general type that you are trying to describe with  

           some specialization in the  generics type declaration。 



           Defining the IWorkbook Interface 



           Now that we’ve pleted the IWorksheet(Of BaseType) and  IWorksheetBase interfaces; we  

           can define the workbook interface。 The workbook interface will not be a  generics type;  

           since a workbook will contain multiple worksheet types。 However; as you will see; we can optimize  

           this interface to make it easier to use the workbook。  

                 For the moment; let’s consider the plain…vanilla IWorkbook interface with no  generics  

           types; which is defined as follows in the ServerSideSpreadsheet: 



           Imports System。Reflection 

           Imports Devspace。Trader。mon 



            _ 

           Public Interface IWorkbook 

               Inherits IDebug 



               ReadOnly Property Identifier() As String 

               Default Property Item(ByVal identifier As String) As IWorksheetBase 

           End Interface 



                The IWorkbook interface defines an Identifier property and a default property Item。 Notice  

           how the attribute DefaultMember is defined to indicate the default property identifier (it is from  

           the System。Reflection namespace)。 Any class that implements IWorkbook is expected to contain  

           multiple references to IWorksheet(Of BaseType) instances。 How those references are managed  

           is not the responsibility of the IWorkbook interface; but of the IWorkbook interface implementation。  
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!