Mam interfejs z kilkoma rodzajowymi metodami i chciałem zaimplementować metodę z przeciążeniami, aby zaakceptować instancję klasy lub jej wartość PK (która jest int lub GUID, ale różni się).Ogólne ograniczenia przeciążenia metod:
dodałem do metod podobnych do tych przykładów:
void DoSomething<TKey>(TKey key) where TKey: struct;
void DoSomething<TModel>(TModel model) where TModel : class;
do „DoSomething” nazwa metody na drugim z nich jest podświetlona, a błąd jest
Type „ISomeStuff” już definiuje element o nazwie "DoSomething" z tymi samymi typami parametrów.
Jestem zaskoczony tym, ponieważ jasno określiłem, że parametry mają być innego typu: jeden jest klasą, a drugi strukturą.
Dlaczego to nie wystarczy, aby podpisy były różne?
Możliwe duplikat [Generic ograniczeń, gdzie T struct i gdzie T: klasa] (http://stackoverflow.com/questions/2974519/generic-constraints-where-t-struct-and-where- klasa t). Zobacz także artykuł Erica Lipperta [tutaj] (http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-signature.aspx). –
@Frederic: Jak ja tęskniłem za tym !!! –
Wygląda na to, że "Powiązane" okienko na pasku bocznym również go nie wybrało, więc może być trudniejsze niż zwykle;) –