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

C# 如何从方法返回实现接口的对象,c#,interface,C#,Interface,我正在尝试学习接口,并想尝试以下内容: 假设我有一个名为ICCustomer的接口,它定义了基本属性(UserID、UserName等)。现在,我有多个具体的类,比如ProductA\u User、ProductB\u User、ProductC\u User。每个都有不同的属性,但它们都实现了ICustomer,因为它们都是客户 我想在一个名为MemberFactory的工厂类中调用一个共享方法,并告诉它给我一个新的用户,然后给它一个我想要的枚举值的参数。由于每个具体类都是不同的,但实现了IC

我正在尝试学习接口,并想尝试以下内容:

假设我有一个名为ICCustomer的接口,它定义了基本属性(UserID、UserName等)。现在,我有多个具体的类,比如ProductA\u User、ProductB\u User、ProductC\u User。每个都有不同的属性,但它们都实现了ICustomer,因为它们都是客户


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

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

ICustomer obj = MemberFactory.ReturnObjectWhichImplementsICustomer();

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

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;
         }
     }
}
switch (customerType)
{
case CustomerType.A:
   return new ProductA_User();
case CustomerType.B:
   return new ProductB_User();
case CustomerType.C:
   return new ProductC_User();
}

factory方法将包括大致如下所示的代码:

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;
         }
     }
}
switch (customerType)
{
case CustomerType.A:
   return new ProductA_User();
case CustomerType.B:
   return new ProductB_User();
case CustomerType.C:
   return new ProductC_User();
}

关于.NET中的接口需要注意的是:它们可以用作对象类型。因此,如果两个随机对象(汽车和电话)都实现了接口ILike,那么通过将ILike指定为函数的返回类型,可以让函数返回任意一种类型。这很有意义!谢谢你的帮助!