Mam interfejsKorzystanie rodzajowy interfejs kilka razy w tej samej klasie
interface IInterface<E>{
E Foo();
}
I wtedy utworzyć klasy jak ten
class Bar : IInterface<String>, IInterface<Int32> {
}
To faktycznie działa się całkiem dobrze, z wyjątkiem muszę zdefiniować jedną z dwóch funkcji z interfejsem jawnym, jak poniżej:
class Bar : IInterface<String>, IInterface<Int32> {
String Foo();
Int32 IInterface<Int32>.Foo();
}
Wadą jest to, że muszę zrobić rzut za każdym razem, gdy chcę dotrzeć do Foo(), który ma wyraźny interfejs.
Jakie są najlepsze praktyki postępowania z tym?
Wykonuję aplikację zależną od wydajności, więc naprawdę nie chcę wykonywać miliona rzutów na sekundę. Czy to jest coś, co JIT wymyśli, czy też powinienem przechowywać w sobie odlewaną wersję instancji?
Nie próbowałem tego konkretnego kodu, ale wygląda okropnie blisko tego, co robię.
Casting ma prawie żadnych kosztów na typów referencyjnych. – leppie
Mój program zawiera rzut co piąty dodatek/mnożenie. Zakładam, że dodawanie/mnożenie jest tak tanie, że koszt odlewania staje się znaczny. –
Nie bardziej kosztowne niż wywołanie interfejsu. – leppie