通过隐式转换

时间:2016-09-28 17:38:48

标签: c#

我正在尝试向我的ViewModel类(VMSalesRep)添加隐式转换:

public static implicit operator IEnumerable<VMSalesRep> (IEnumerable<QuoteSalesRep> vm)
{
    IEnumerable<VMSalesRep> result = vm.Select(x => new VMSalesRep()
    {
        QuoteSalesRepID = x.QuoteSalesRepID,
        FirstName = x.FirstName,
        LastName = x.LastName,
        CommisionPercentage = x.CommisionPercentage
    });
    return result;
}

我需要将IEnumerable<QuoteSalesRep>转换为IEnumerable<VMSalesRep>。但是我收到了错误:

  

用户定义的转换必须转换为封闭类型

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您只能从您来自或将去的类中声明隐式转换。因此,您需要将转化置于IEnumerable<T>的定义范围内,因为这是源和目标的类型, 无法完成

您将无法从一个IEnumerable进行隐式转换。