从参数[duplicate]中获取一种通用扩展方法类型

问题描述 投票:-1回答:1

当我尝试使用两个泛型类型参数调用扩展方法并且这些类型之一用于参数时,我遇到了问题。调用此扩展程序时,我需要同时指定它们。如何只指定其中一个,然后从参数推断另一个?

这是我的代码:

public static IEnumerable<TModel> ToModel<TEntity, TModel>(this IEnumerable<TEntity> entities) 
where TModel : IMappableToModel<TEntity, TModel>, new()
    {
        var models = new List<TModel>();

        foreach (TEntity entity in entities)
        {
            TModel model = new TModel();
            model.ToModel(entity);
            models.Add(model);
        }

        return models;
    }

我现在这样称呼:

entity.Items.ToModel<TEntity, TModel>()

我想这样称呼它:

entity.Items.ToModel<TModel>()
c# linq extension-methods
1个回答
0
投票
我认为您能做的最好的事情就是添加一个您在通话中传递的未使用的参数:

public static IEnumerable<TModel> ToModel<TEntity, TModel>(this IEnumerable<TEntity> entities, TModel _) where TModel : IMappableToModel<TEntity, TModel>, new()

然后您可以通过强制转换null来调用传递类型的方法:

var ans = q.ToModel((AModel)null);

其中qIEnumerable<TEntity>


-1
投票
public static IEnumerable<TModel> ToModel<TModel>(this IEnumerable<object> entities) where TModel : IMappableToModel<object, TModel>, new() { var models = new List<TModel>(); foreach (object entity in entities) { TModel model = new TModel(); model.ToModel(entity); models.Add(model); } return models; }
© www.soinside.com 2019 - 2024. All rights reserved.