繁体   English   中英

如何编写通用代码以在C#中保存和编辑模型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM