Nr Pierwszy to funkcja, która pobiera T
i zwraca wartość object
. Drugi akceptuje numer IUpdateConfiguration<T>
i zwraca wartość object
. Jeśli nie jest to T
jest również IUpdateConfiguration<T>
, nie możesz rzucić tego. Jeśli znasz sposób przekonwertowania numeru IUpdateConfiguration<T>
na T
, możesz utworzyć wyrażenie nowe,, ale to coś innego niż przesyłanie.
Na przykład, biorąc pod uwagę to:
Expression<Func<IUpdateConfiguration<T>, T> expr2;
Można dokonać pożądaną funkcję tak:
Expression<Func<IUpdateConfiguration<T>, object>> =
(IUpdateConfiguration<T> t) => expr1(expr2(t));
Ale to będzie miał zupełnie inny wyraz niż ciało oryginalnego. To może, ale nie musi być problem, w zależności od tego, co próbujesz osiągnąć.
Jak dokładnie funkcja 'expr1' jest funkcją? – Unihedron
@Unihedron: Deklaracją. Dokładniej, jest to wyraz tego typu funkcji. Wyrażenia służą do refleksji nad abstrakcyjnymi drzewami składni i sprawdzania rzeczywistej zawartości wyrażenia. Ale typy wejściowe i wyjściowe są określone w parametrach ogólnych. "T" i "obiekt" odpowiednio. – recursive
Czy mógłbyś wyjaśnić swoje ostatnie rozwiązanie (stworzyć nowe wyrażenie) za pomocą przykładu? – Masoud