c# 需要为各种 类 提供一种扩展方法

c# need to have one extension method for various classes

我想做的是我需要为我的所有模型提供一种扩展方法。

假设我有 3 个 class/models。

我正尝试在我的扩展方法中做类似的事情(未能成功)。

public static IQueryable<T> IncludeAllInfo<T>(this IQueryable<T> model)
    {
        if(model.getType().ToString() == "Model1")
        {
           var newModel = model.asQueryable<Model1>();

           return newModel.Include(a => a.Model2).Include(a => a.Model3);
        }
        elseif(model.getType().ToString() == "Model2")
        {
           var newModel = model.asQueryable<Model2>();

           return newModel.Include(a => a.Model3);
        }
    }

这是可能的还是我必须为每种类型创建重载方法?

为每个实体创建一个扩展

    public static IQueryable<MyEntity> IncludeAllInfo(this Dbset<MyEntity> model)
    {

           return model.Include(a => a.Model3);

    }

或者

    public static IQueryable<MyEntity> IncludeAllInfo(this IQueryable<MyEntity> model)
    {

           return model.Include(a => a.Model3);

    }

您应该为每种类型创建 1 个方法。

public static IQueryable<Model1> IncludeAllInfo(this IQueryable<Model1> model) { 
  return model.Include(a => a.Model2).Include(a => a.Model3);
}

public static IQueryable<Model2> IncludeAllInfo(this IQueryable<Model2> model) {
  return model.Include(a => a.Model3);
}

这更容易测试、维护和阅读,而且代码比上面的少。