muszę używać rodzajowy interfejs jak poniżej:Funkcja powrocie typu rodzajowego, którego wartość jest znana tylko w czasie wykonywania
public interface IContainer<T>
{
IEnumerable<IContent<T>> Contents { get; }
}
Celem realizacji tego interfejsu jest zwracany przez ogólny sposób jak poniżej:
IContainer<T> GetContainer<T>(IProperty property);
Typ T
jest nieznany do czasu wykonywania.
Korzystając z odbicia, jestem w stanie wywołać metodę GetContainer<T>
i uzyskać wynik.
Mój problem polega na tym, że nie wiem, jak wyliczyć wynik, który ma typ Object
(dlatego nie mogę go przesłać do IEnumerable
).
Próbowałem również odlewy następująco ale to nie działa (mówi „Oczekuje Type”):
var myContainer = genericMethodInfo.Invoke(
myService,
new object[] { property })
as typeof(IContainer<>).MakeGenericType(type);
gdzie type
jest typem Runtime myService
jest usługa narażając metodę GetContainer<T>
i property
jest w razie potrzeby typu IProperty
.
UPDATE: patrz mój kompletne rozwiązanie w moim blogu: http://stefanoricciardi.com/2010/02/18/generics-with-type-uknown-at-compile-time/
możliwe duplikat (http://stackoverflow.com/questions/232535/how- to-use-reflection-to-call-generic-method) – nawfal