2010-09-12 1 views
1

Рассмотрим следующий пример:Containership Вопрос

namespace ValueObjects 
{ 
    public class User 
    { 
    public string UserCode { get; set; } 
    public string UserName { get; set; } 
    } 

    public class Company 
    { 
    public string CompanyCode { get; set; } 
    } 
} 

Теперь я хочу, класс пользователя, чтобы иметь свойство CompanyCode .. первое очевидное решение будет просто поставить свойство CompanyCode на классе User

public class User 
{ 
    public string UserCode { get; set; } 
    public string UserName { get; set; } 
    public string CompanyCode { get; set; } 
} 

Теперь проблема здесь redunduncy, потому что уже есть свойство CompanyCode для класса Company, есть ли способ, которым Пользователь сможет просто использовать свойство CompanyCode компании без наследования класса Company (проблема здесь в C# не allo w множественное наследование классов) или с использованием интерфейса ICompany (но интерфейс - это боль в объектах Value). Я думаю, что просто включите класс Company в класс User, но я буду использовать только его собственный код.

что-то вроде этого ..

public class User 
    { 
    public string UserCode { get; set; } 
    public string UserName { get; set; } 
    private Company company; 
    public string CompanyCode { get { company.CompanyCode } set {company.CompanyCode } 

    } 

но потом, это не разница просто добавить строку свойство CompanyCode .. нужны ваши советы, ребята. Спасибо заранее.

ответ

2

Ваше решение действительно. Вы хотите сдерживание; «имеет отношение», а не «is-a» (наследование). Другим вариантом было бы

public Company UserCompany; 

, который позволил бы получить доступ к объекту пользователя другие общественные свойства на объекте компании, если они будут добавлены в будущем.

+0

Проблема заключается в том, что я делаю класс Компании собственностью Пользователя - public Company UserCompany {get; задавать; } - и поместите пользователя в коллекцию (например, Collection ) и привяжите ее к Gridview. Gridview's Boundfield не позволит вам получить доступ к свойству содержащегося класса ... – CSharpNoob

+0

@CsharpNoob действительно, objectdatasource/asp.net простая привязка данных не может пройти через сложные классы. Взгляните сюда: http://www.codeproject.com/KB/database/CustomBindableObject.aspx –

+0

Есть ли какие-либо решения по этому поводу? Я использую DTO и его противный, чтобы увидеть слишком много свойств CompanyCode в моих объектах ценности. – CSharpNoob

 Смежные вопросы

  • Нет связанных вопросов^_^