ObjectFactory и SqlQuery
От: albenik Россия  
Дата: 05.03.09 12:02
Оценка:
В примере http://bltoolkit.net/doc/Reflection/ObjectFactory.htm показано, как использовать ObjectFactory в случае с рукописным запросом.
А было бы очень здорово, если-бы можно было сделать как-то так:
[ObjectFactory(typeof(Person.ObjectFactory), "PersonType")]
public class Person
{
    [MapField("PersonID")]
    public int    ID;

    public string LastName;
    public string FirstName;
    public string MiddleName;

    class ObjectFactory : IObjectFactory
    {
        public object CreateInstance(TypeAccessor typeAccessor, InitContext context, string selectorFieldName)
        {
            // Get the object type indicator field.
            //
            object objectType = context.DataSource.GetValue(context.SourceObject, selectorFieldName);

            // Target ObjectMapper must be changed in order to provide correct mapping.
            //
            switch ((string)objectType)
            {
                case "D": context.ObjectMapper = ObjectMapper<Doctor>. Instance; break;
                case "P": context.ObjectMapper = ObjectMapper<Patient>.Instance; break;
            }

            // Create an object instance.
            // Do not call ObjectMapper.CreateInstance as it will lead to infinite recursion.
            //
            return context.ObjectMapper.TypeAccessor.CreateInstance(context);
        }
    }
}

что бы можно было делать так:
List<Person> list = new SqlQuery(db)<Person>.SelectAll();


А то ради того, чтобы запросить из вьюшки подобные данные, приходится либо руками запрос писать, чтобы в него нужное поле попало, либо проперти PersonType в класс добавлять, которае там нафиг не сдалось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.