无法将类型<< oftypeiterator>的对象强制转换为类型'System.Collections.Generic.IList

时间:2019-05-11 14:57:41

标签: c# asp.net linq

我有一个接口IHandler,可以有多个实现。我想在IHandler的所有实现中调用一个方法,并整理结果,如下所示:

var identifiers = new List<Identifier>();
foreach(var handler in _handlers.ToList())
{
    var ids = handler.PreCheck(postData.ClientId).ToList();
    identifiers.AddRange(ids);
}

_handlers插入IEnumerabale<IHandler>到构造函数中。

PreCheck方法在实现IHandler时具有以下代码:

public IList<Identifier> PreCheck(int clientId)
{
    try
    {
        var identifiers = new List<Identifier>();
        var medications = _service.GetAll(clientId, 1, 3, 0);
        foreach(var medication in medications)
        {
            var identifier = new Identifier();
            identifier.ItemIdentifier = medication.MedicationIdentifierId;
            identifier.System = Constants.MODULE_NAME;
            identifiers.Add(identifier);
        }

        return identifiers;
    }
    catch (Exception)
    {
        throw;
    }
}  

GetAll的返回类型为List<MedicationModel>

在执行var ids = handler.PreCheck(postData.ClientId).ToList();行时,将引发异常:

Unable to cast object of type '<OfTypeIterator>d__95`1[Models.Identifier]' to type 'System.Collections.Generic.IList`1[Models.Identifier]'.

更新:IHandler的代码

public interface IHandler : IEventHandler
{
    IList<Identifier> PreCheck(int clientId);
}

这是什么问题?

0 个答案:

没有答案