0
我想轉換一個:將表達式轉換<Func鍵<TProperty>>到Func鍵<TObject的,TProperty> TObject的地方被稱爲
Expression<Func<TProperty>>
到
Func<TObject, TProperty>
凡TObject的是已知的,並公開由表達式表達的屬性。爲此,我想象必須操縱表達式,將它與新表達式中的TObject類型參數結合起來並進行編譯。
編輯:實施例的輸入和輸出
class SomeType
{
public int Number { get; set; }
public Func<TObject, TProperty> FuncConverter<TObject, TProperty>(Expression<Func<TProperty>>)
{
// ???
}
public void test()
{
Func<SomeType, int> outputFunc = FuncConverter<SomeType, int>(inputExpression);
}
}
表達我期望作爲輸入:
Expression<Func<int>> inputExpression =() => Number;
該表達式指向Number屬性上SOMETYPE
函數求委託,我期望作爲輸出:
Func<SomeType, int> outputFunc = type => type.Number;
End Edit
問題是,我不知道該怎麼做。我真的很感激一些(引用)操作Lambda表達式的可訪問信息,因爲我還沒有遇到任何問題。
忽略錯字,我不知道我明白如何將不帶參數的函數轉換爲帶參數的函數。 – Jodrell
'TObject已知並且暴露了表達式表達的屬性 - >這是我有很多麻煩理解的句子。你能澄清一下嗎? –
@Jodrell Expression指向對象上的一個屬性。我假設,結合對象類型的知識,將有可能構建一個新的表達式,我可以將其用作集合的ToDictionary方法中的EqualityComparer。你說這是不可能的嗎? –