如何从方法返回实现接口的对象

时间:2009-11-12 20:39:10

标签: c# interface

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

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

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

3 个答案:

答案 0 :(得分:7)

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

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;
         }
     }
}

答案 1 :(得分:1)

当你调用方法时,你所要做的就是正常返回对象。它将它映射到它发挥作用的界面。

ICustomer obj = MemberFactory.ReturnObjectWhichImplementsICustomer();

答案 2 :(得分:0)

工厂方法将包含执行大致类似的代码:

switch (customerType)
{
case CustomerType.A:
   return new ProductA_User();
case CustomerType.B:
   return new ProductB_User();
case CustomerType.C:
   return new ProductC_User();
}