Динамическая привязка к свойству - PullRequest
0 голосов
/ 08 апреля 2011

Привет, я использую Entity Framework в качестве моего картографа, у меня есть dropDownList, и я хочу установить в коде данных свойство DataTextField, чтобы некоторые свойства моего класса, но я не хочу делать это статическим с "someProperty" потому что, если естьизменит поле в моей модели, это место вызовет у меня исключение.Как я могу сделать это, чтобы, если имя свойства изменится, здесь привязка будет указывать на измененное свойство?

Я нашел гораздо лучшее решение:

public static string GetPropertyName<T, TReturn>(Expression<Func<T, TReturn>> expression)
    {
        MemberExpression body = (MemberExpression)expression.Body;
        return body.Member.Name;
    }

, а затем:

GetPropertyName((SampleClass) => r.SampleProperty)

так что это не статическая строка, но я все еще не доволен, потому что, когда я изменяю поле в модели сущности, здесь у меня возникает ошибка, возможно ли, что с изменениями в модели эта привязка тоже изменится?

1 Ответ

0 голосов
/ 08 апреля 2011

Мы сопоставляем бизнес-объекты анонимным объектам перед привязкой данных, например:

var objectsToBindToDropdown = businessObjects.Select(o => new 
    {
        SomeProperty1 = o.BusinessProperty1, 
        SomeProperty2 = o.BusinessProperty2
    });

dropDownList.DataTextField  = "SomeProperty1";
// TODO: bind the drop down list

Если в модели есть изменение, например, BusinessProperty1 переименовывается в AnotherBusinessProperty1, вы получите ошибку компиляции, иэто была именно цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...