Wdrażam ogólny interfejs (konkretnie, iqueryprovider). w pewnym momencie, jestem zmuszony zwrócić wynik rodzajowy, że muszę się z jakimś wewnętrznym interfejsem:Ogólne ograniczenia i interfejsy typów typów
public TResult Execute<TResult>(...) {
return something.Foo<TResult>();
}
gdzie something.Foo jest
public T Foo<T>() where T: MyBaseClass, new() {
...
}
to oczywiście wieje ponieważ zdefiniowany zewnętrznie TResult nie ma takich samych ograniczeń typu jak wewnętrznie zdefiniowane T. pytanie: czy istnieje sposób na uprzyjemnienie TResult dla Foo? czy mogę w jakiś sposób jawnie przetestować te dwa warunki i zmusić zmienną typu?
* wzdycha *, podczas gdy to działa, to cholernie nieprzyjemne, zwłaszcza w kodzie na poziomie framework. – kolosy
Skończyłem w ten sposób. Nie jestem zwolenniczką miękkiej zależności od metody, ale bije ona porzucając ograniczenia i wciąż wykonując odwołania do innych rzeczy, które zrobiła metoda wewnętrzna. – kolosy