In de volgende methode specificeer ik een zgn. generic type parameter U. De constraint is dat U van type T moet zijn, of een subtype daarvan.
Ik kan deze methode echter alleen zo aanroepen:
In dit voorbeeld is repository een instantie van ProjectRepository welke IRepository<Project> implementeert. Dus je zou denken dat de generieke parameter voor de Find methode overbodig is tenzij je een subtype wil specificeren. Immers, de repository is een implementatie waarbij T bekend is (Project), dus tenzij anders gespecificeerd, zou U toch ook van type Project moeten zijn (dat zou aangenomen kunnen worden).
Werkt niet: "The type arguments cannot be inferred from the usage".
Waarom is dat?
C#:
1
2
| // Onderdeel van de interface IRepository<T> IQueryable<U> Find<U>() where U : T; |
Ik kan deze methode echter alleen zo aanroepen:
C#:
1
| repository.Find<Project>(); |
In dit voorbeeld is repository een instantie van ProjectRepository welke IRepository<Project> implementeert. Dus je zou denken dat de generieke parameter voor de Find methode overbodig is tenzij je een subtype wil specificeren. Immers, de repository is een implementatie waarbij T bekend is (Project), dus tenzij anders gespecificeerd, zou U toch ook van type Project moeten zijn (dat zou aangenomen kunnen worden).
C#:
1
| repository.Find(); |
Werkt niet: "The type arguments cannot be inferred from the usage".
Waarom is dat?