我正在尝试学习界面,并想尝试以下方法:

假设我有一个名为ICustomer的接口,该接口定义了基本属性(UserID,UserName等)。现在,我有多个具体的类,例如ProductA_User,ProductB_User,ProductC_User。每个属性都有不同的属性,但是它们都是客户,因此都实现了ICustomer。

我想在一个名为MemberFactory的工厂类中调用一个共享方法,并告诉一个新用户,我只给它一个我想要的枚举值的参数。由于每个具体的类都不同,但是实现了ICustomer,因此我应该能够返回实现ICustomer的实例。但是,我不确定在工厂类中如何执行此操作,因为我的返回类型是ICustomer。

最佳答案

您所要做的就是像这样创建对象:

class ProductA_User : ICustomer
{
    //... implement ICustomer
}
class ProductB_User : ICustomer
{
    //... implement ICustomer
}
class ProductC_User : ICustomer
{
    //... implement ICustomer
}

class MemberFactory
{
     ICustomer Create(ProductTypeEnum productType)
     {
         switch(productType)
         {
             case ProductTypeEnum.ProductA: return new ProductA_User();
             case ProductTypeEnum.ProductB: return new ProductB_User();
             case ProductTypeEnum.ProductC: return new ProductC_User();
             default: return null;
         }
     }
}

关于c# - 如何从方法返回实现接口(interface)的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1725213/

10-11 15:43