小编cul*_*rer的帖子

将泛型类型传递给通用接口

我正在尝试实现一个完全通用的CRUD API,通过上下文可以传入任何类类型并通常保存,更新等.

我有一个存储库,可以保存任何模型类型,如下所示:

public class Repository<T> : IRepository<T> where T : class 
    {
        private Context _db = new Context();

        public T Add(T newItem) 
        {
            var result = _db.Set<T>().Add((T)newItem);
            _db.SaveChanges();

            return result;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这继承自实现所有"add"方法的通用接口:

public interface IRepository<T> where T : class
{
    T Add(T newItem);
}
Run Code Online (Sandbox Code Playgroud)

我很难理解为什么我不能将泛型类型传递给存储库接口的新实例?我理想的喜欢这样的东西:

var data = new Data(){
    Id = 1
};

IRepository<data.GetType()> repo = new Repository<data.GetType()>();
Run Code Online (Sandbox Code Playgroud)

从而允许我将任何类型传递给方法并在其后面生成正确的接口.

它允许我传递一种具体的类型,但这种类型会使其成为通用的对象.

任何关于这个的想法或解释为什么它不可能将不胜​​感激 - 谢谢.

.net c# generics entity-framework interface

3
推荐指数
1
解决办法
4618
查看次数

计算一段时间内每小时的分钟数细分

我试图详细了解一段时间内每小时的分钟数。例如,假设我有两个日期时间,如下所示:

DateTime onTime = new DateTime(2019, 11, 6, 6, 30, 0);
DateTime offTime = new DateTime(2019, 11, 6, 10, 45, 0);
Run Code Online (Sandbox Code Playgroud)

所以有两个 DateTime 代表:

"2019-11-06 06:30:00"
"2019-11-06 10:45:00"
Run Code Online (Sandbox Code Playgroud)

我想要实现的是给定时间段内每小时的分钟数细分。我希望它看起来像:

int 6 = 30; // Hour 6 = 30 minutes
int 7 = 60; // Hour 7 = 60 minutes
int 8 = 60; // Hour 8 = 60 minutes
int 9 = 60; // Hour 8 = 60 minutes
int 10 = 45; // Hour 10 = 45 minutes
Run Code Online (Sandbox Code Playgroud)

我可以确定是尝试使用 …

c# linq datetime loops

1
推荐指数
1
解决办法
123
查看次数

标签 统计

c# ×2

.net ×1

datetime ×1

entity-framework ×1

generics ×1

interface ×1

linq ×1

loops ×1