0

我有3個實體。
產品
LANGID
產品名稱

類別
LANGID
CatName

ProductType
LANGID
類型名
3個實體執行相同的lambda謂詞。如何爲這些實體創建一個lambda表達式通用

正如你所看到的,他們每個人都有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

您可以完成此操作的一種方法是使用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 
+0

當我把GetLmbLang()方法。在倉庫????。 – 2010-10-26 03:59:45

+0

NICEEE。那工作。 – 2010-10-26 04:07:53

+0

@Jean與你所說的相同的地方,我猜想,在BaseRepository 內。 – jordanbtucker 2010-10-26 04:10:42

相關問題