我如何使用complextype类或多类型类是泛型集合?

时间:2010-04-15 10:19:37

标签: c# .net visual-studio oop architecture

我需要一个复杂的返回类型。我有4类返回类型COMPLEXTYPE必须包括公司,Muayene,Radyoloji,Satis因为我必须返回数据切换案例情况我该怎么办?也许我需要通用收藏我怎么能这样做?

  public class GenoTipController
    {
        public COMPLEXTYPE Generate(DataModelType modeltype)
        {
            _Company company = null;
            _Muayene muayene = null;
            _Radyoloji radyoloji = null;
            _Satis satis = null;
            switch (modeltype)
            {
                case DataModelType.Radyoloji:
                    radyoloji = new Radyoloji();
                    return radyoloji;
                    break;
                case DataModelType.Satis:
                    satis = new Satis();
                    return satis;
                    break;
                case DataModelType.Muayene:
                    muayene = new Muayene();
                    return muayene;
                    break;
                case DataModelType.Company:
                    company = new Company();
                    return company;
                    break;
                default:
                    break;
            }


        }
    }

    public class CompanyView
    {
        public static List GetPersonel()
        {
            GenoTipController controller = new GenoTipController();
            _Company company = controller.Generate(DataModelType.Company);
             return company.GetPersonel();

        }

    }



    public enum DataModelType
    {
        Radyoloji,
        Satis,
        Muayene,
        Company
    }

根据枚举类型会产生类。

3 个答案:

答案 0 :(得分:1)

看起来你所追求的是一个界面。从Generate方法返回的COMPLEXTYPE必须根据后面的代码公开名为GetPersonel的方法。

public interface ICompany
{
   List GetPersonnel();
}

然后您的Generate方法变为:

public ICompany Generate(DataModelType modeltype)

你的4个班级(Radyoloji,Satis,Muayene,Company)都必须实现这个界面。

答案 1 :(得分:0)

为什么不从类_Company派生类_Muayene,_Radyoloji和_Satis并在_Company类中保留公共数据成员和函数(如GetPersonel)?

答案 2 :(得分:0)

从您的代码中可以看出,当 可以有多种类型时,您仍然只能一次只有一个,对吗?如果是这样的话那么Nayan的基类或Jamiec的界面是不错的选择。 GenoTipController似乎是一个工厂,这正是它应该做的。这样,您的客户不关心具体类型是什么。