Рассмотрим следующий пример: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 .. нужны ваши советы, ребята. Спасибо заранее.
Проблема заключается в том, что я делаю класс Компании собственностью Пользователя - public Company UserCompany {get; задавать; } - и поместите пользователя в коллекцию (например, Collection) и привяжите ее к Gridview. Gridview's Boundfield не позволит вам получить доступ к свойству содержащегося класса ... –
CSharpNoob
@CsharpNoob действительно, objectdatasource/asp.net простая привязка данных не может пройти через сложные классы. Взгляните сюда: http://www.codeproject.com/KB/database/CustomBindableObject.aspx –
Есть ли какие-либо решения по этому поводу? Я использую DTO и его противный, чтобы увидеть слишком много свойств CompanyCode в моих объектах ценности. – CSharpNoob