【发布时间】:2015-07-24 16:25:41
【问题描述】:
有人试图用 C# 在 ASP.NET MVC 中实现抽象。
他们有一个基本实体控制器,它应该为其派生类(实体)完成大部分工作。在其中,他们有一个有问题的方法,该方法应该返回每个表的数据库上下文(他们没有使用任何数据库框架,如 EF)。方法如下:
protected abstract DbContext<EntityViewModel> CreateContext();
所以,假设他们有一个 Category 表,应该实现该方法:
protected override DbContext<EntityViewModel> CreateContext()
{
return new CategoryDbContext();
}
但是 C# 说他们不能隐式转换它,等等......
这里是上下文类:
public abstract class DbContext<T>
{
public abstract void Create(T entity);
public abstract List<T> Read(ModifyData data);
public abstract void Update(T entity);
public abstract void Delete(T entity);
}
public class CategoryDbContext : DbContext<CategoryViewModel>
{
public override void Create(CategoryViewModel entity)
{
}
public override List<CategoryViewModel> Read(ModifyData data)
{
}
public override void Update(CategoryViewModel entity)
{
}
public override void Delete(CategoryViewModel entity)
{
}
}
此设计有什么问题?如何更改这些类才能正常工作?
【问题讨论】:
-
如果问题被标记为重复,为什么要重新发布?另一个问题是什么?
-
@AlexFoxGill 对于那些可以看到的人stackoverflow.com/questions/31605068/… 我投票支持取消删除
-
另一个问题的答案基本上回答了为什么原始发布者无法将 CategoryDbContext 转换为 DbContext
。它没有回答原始帖子中的以下陈述和问题:“我正在尝试使用 C# 在 ASP.NET MVC 中实现抽象......我在这里做错了什么?” -
@TyreeJackson 删除元内容,即“(w/o perm)”、“问题被标记为 dup”等。对于阅读问题的人来说,是否无关紧要它基于另一个问题,只要它有用。其他人投了反对票,因为他们不明白你为什么这样做。所以把问题写成你的问题,最后你可以提供一个链接给想到它的用户。
-
@Armfoot 我已根据您的反馈更新了问题。再次感谢!您在这里和 SO Meta 上的回复对像我这样的 SO 贡献者新手非常有帮助。
标签: c# generics generic-programming parametric-namespaces