Как заполнить несколько типов бизнес-объектов из одного метода? - PullRequest
1 голос
/ 22 июля 2010

У меня есть четыре различных бизнес-объекта, и каждый вызывает свой соответствующий метод FillBusinessObject, чтобы заполнить все индивидуальные свойства объекта по одному. Теперь я хочу создать общий метод, который сможет заполнять каждый тип бизнес-объекта. Я создал базовый класс, от которого наследуются все бизнес-объекты, но я не могу понять, как заполнить отдельные свойства объекта из общего метода.

Возможно ли это (если да, то как) или я в мире грез?

P.S. Я не хочу идти по другому маршруту, как LINQ.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Похоже, вы слишком усложняете вещи.

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

0 голосов
/ 23 июля 2010

Как насчет этого:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main( string[] args )
        {
            // Create some business objects and ask them to initialize
            // themselves.
            //

            var bo1 = new BusinessObject1();
            var bo2 = new BusinessObject2();

            bo1.Fill();
            bo2.Fill();
        }

        public abstract class BusinessObjectBase
        {
            public int x { get; private set; }

            public virtual void Fill()
            {
                x = 123;
            }
        }

        public class BusinessObject1 : BusinessObjectBase
        {
            public int y { get; private set; }

            public override void Fill()
            {
                // Let base class fill itself.
                base.Fill();

                // Now we fill our own properties.
                this.y = 456;
            }
        }

        public class BusinessObject2 : BusinessObjectBase
        {
            public int z { get; private set; }

            public override void Fill()
            {
                // Let base class fill itself.
                base.Fill();

                // Now we fill our own properties.
                this.z = 456;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...