3 个实体执行相同的 lambda 谓词。如何为这些实体创建通用的 lambda 表达式

发布于 2024-09-29 14:54:04 字数 663 浏览 3 评论 0原文

我有 3 个实体。
产品
语言ID
产品名称

类别
语言 ID
猫名

产品类型
语言ID
TypeName

正如你所看到的,它们每个都有 LangID 属性。 我希望能够创建一个通用存储库,该存储库仅包含一个返回 Func的函数。 GetLmbLang()

   public interface IBaseRepository<T> where T : class
   {
        Func<T, bool> GetLmbLang();
   }

   public class BaseRepository<T> : IBaseRepository<T> where T : class
   {

      public Func<T, bool> GetLmbLang()
      {
          //ERROR HERE
          //That dosen't work here
          return (p => p.LangID == 1);
      }
   }

有人有一个想法???。

I Have 3 entities.
Product
LangID
ProductName

Category
LangID
CatName

ProductType
LangID
TypeName

As you can see, each of them has LangID Property.
I Would like be able to create a generic repository that will contain only one function that will return an Func<T, bool> GetLmbLang()

   public interface IBaseRepository<T> where T : class
   {
        Func<T, bool> GetLmbLang();
   }

   public class BaseRepository<T> : IBaseRepository<T> where T : class
   {

      public Func<T, bool> GetLmbLang()
      {
          //ERROR HERE
          //That dosen't work here
          return (p => p.LangID == 1);
      }
   }

Someone has an idea ???.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘落散花 2024-10-06 14:54:04

实现此目的的一种方法是创建一个具有 LangID 属性的接口,并让每个类实现该接口。

public interface IHasLangID
{
  string LangID { get; set; }
}

public class Product : IHasLangID
...
public class Category : IHasLangID
...
public class ProductType : IHasLangID
...

public interface IBaseRepository<T> where T : IHasLangID
...
public class BaseRepository<T> : IBaseRepository<T> where T : IHasLangID

One way you can accomplish this is by creating an interface with the LangID property, and have each of your classes implement this.

public interface IHasLangID
{
  string LangID { get; set; }
}

public class Product : IHasLangID
...
public class Category : IHasLangID
...
public class ProductType : IHasLangID
...

public interface IBaseRepository<T> where T : IHasLangID
...
public class BaseRepository<T> : IBaseRepository<T> where T : IHasLangID
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文