I was thinking for the puposes of "responsibility behaviours "delay-loaded" was an approach to consider.
Of course, having multiple Person implementations via interfaces works too. The issues that might make this approach a bit complicated for my purposes are that essentially there are many helper functions that are used to query and filter collections of Persons for different purposes. For example, the purpose might be just to fill a list with names or the purpose might require that quite a large nesting of collections (and all of the database connections that are required to fill them; which can effect performance for a relatively small collection). For example, a list of Persons containing objects that define student courses and related session information. Some typical requirements for what needs to be included in the Person and what needs to be included in the collections are: Get me every Person with the Last name of 'Jones' to include name only. Get me all Person(s) that are a "Counselor" or a "Teacher" to included employee information, history etc. Get me all Person(s) that are a "Student" to include course and session information. Get me all Person(s) that are a "Student" with the Last name of 'Jones' to include course and session information. So, different types implementing an interface might get a bit tricky as far as knowing what casts to make when the various Persons implementaions are returned. I just wondering if another approach might be to have the helper functions request that certain responsiblity/functionality is added for returned Persons. For example, get me every Person with the Last name of 'Jones' for display only. This would just return Persons instantiated with basic identifying info only and would not incur all the overhead unless required for the purpose. You could get a similar behavior with interfaces to if they were defined in the appropriate way too. =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com