[英]With C# 3.0, how to write Interface based code with generic collection?
[英]How to write generic Code to save and edit model in C#?
在这里,我正在尝试保存和编辑下面代码所针对的模型。 但是我想开发通用代码,该代码可以对传递的任何模型执行相同的工作。
下面是我的代码
public void SaveGallery(Video model)
{
if (model.VideoId == 0)
{
uow.Repository<Video>().Add(model);
}
else
{
uow.Repository<Video>().Edit(model);
}
uow.Commit();
}
令我不满意的是, 存储库被搁置了。 您可以使用泛型和Func
public void AddOrUpdateStuff<T>(T model, Func<T,int> id)
{
if (id(model) == 0)
uow.Repository<T>().Add(model);
else
uow.Repository<T>().Edit(model);
uow.Commit();
}
用法
AddOrUpdateStuff(something, s => s.Id);
您也可以将其设为扩展方法,但是最好将其限制为接口或基本类型
更好的解决方案是在接口中一致地命名您的ID
public Interface IModel
{
int Id {get;set;}
}
而且您的签名看起来像这样,带有更多类型的善意
public void AddOrUpdateStuff<T>(this T model) where T : IModel
{
if (model.Id == 0)
uow.Repository<T>().Add(model);
else
uow.Repository<T>().Edit(model);
uow.Commit();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.