3 объекта выполняют один и тот же лямбда-предикат. Как создать одно лямбда-выражение, общее для этих объектов - PullRequest
0 голосов
/ 26 октября 2010

У меня есть 3 сущности.
Продукт
LangID
ProductName

Категория
LangID
CatName

ProductType
LangID
TypeName

Как видите, у каждого из них есть свойство LangID. Я хотел бы иметь возможность создать общий репозиторий, который будет содержать только одну функцию, которая будет возвращать 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);
      }
   }

У кого-то есть идея ???.

1 Ответ

1 голос
/ 26 октября 2010

Один из способов добиться этого - создать интерфейс со свойством 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...