Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Interfaces to Add Semantic Meaning

0.00/5 (No votes)
22 Jun 2014 1  
Using interfaces to add sematic meaning to your POCO classes

Introduction

Much data are organized in a hierarchical manner - for example as Region.Country.Office or Fund.ShareClass.Account. Each level of these requires a foreign key up to its parent level and this is usually a primitive data type (string, GUID or integer for example) with a meaningful name.

A good habit to get into is the creation of interfaces for these hierarchical layers to tag the properties involved in the hierarchy. For example, if we are using integers for our hierarchy navigation then the fund->shareclass->account, we could create interfaces like:

    '''<summary>
    ''' A fund - top level DTO
    ''' </summary>
    Public Interface IFundRecord
         ''' <summary>
        ''' The unique identifier of the fund
        ''' </summary>
        ReadOnly Property FundIdentifier As Integer

End Interface

Then share class inherits from this:

''' <summary>
''' A share class
''' </summary>
Public Interface IShareClassRecord
    Inherits IFundRecord

    ''' <summary>
    ''' The unique identifier of the share class
    ''' </summary>
    ReadOnly Property ShareClassIdentifier As Integer

End Interface

And because .NET allows multiple interface inheritance, we could make an account link to both a share class and an investor:

''' <summary>
''' An investor account in a share class
''' </summary>
Public Interface IAccountRecord
    Inherits IShareClassRecord, IInvestorRecord

    ''' <summary>
    ''' The unique identifier of the account
    ''' </summary>
    ReadOnly Property AccountIdentifier As Integer

End Interface

History

  • 22nd June, 2014: Initial version

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here