2012-11-23 78 views
0

我正在使用表達式。是否有可能有一個genric返回類型,所以我想返回屬性的類型是傳遞到我的表達式。表達式返回類型是通用的嗎?

public PropertyMapping(Expression<Func<TEntity, int>> expression) 
    { 
     this.expression = expression; 

     if (this.expression != null) 
     { 
      this.expressionMemberName =((MemberExpression)this.expression.Body).Member.Name; 
     } 
    } 

我不想創建StringPropertyMapping,IntPropertyMapping,DoublePropertyMapping等....

回答

0

你需要的屬性類型添加一個類型參數的PropertyMapping類。如果它嵌套定義了TEntity類型參數類中,它會成爲PropertyMapping<TProperty>

public class SomeClass<TEntity> 
{ 
    public class PropertyMapping<TProperty> 
    { 
     public PropertyMapping(Expression<Func<TEntity, TProperty>> expression) 
     { 
     ... 

如果它是一個頂級類,它將成爲PropertyMapping<TEntity, TProperty>

public class PropertyMapping<TEntity, TProperty> 
{ 
    public PropertyMapping(Expression<Func<TEntity, TProperty>> expression) 
    { 
     ... 
+0

謝謝!它如何知道T是什麼?這是我設置表達式的地方:this.PropertyMapping(c => c.MyProperty); –

+0

這是類型推斷 - 編譯器知道'c'的類型,所以它能夠計算出'c.MyProperty'的類型,並推斷'TProperty'必須是那種類型。 –

相關問題