Многократное использование универсального интерфейса в одном классе

У меня есть интерфейс

interface IInterface<E>{
    E Foo();
}

Затем я создаю такой класс

class Bar : IInterface<String>, IInterface<Int32> {
}

На самом деле это работает довольно хорошо, за исключением того, что мне нужно определить одну из двух функций с явным интерфейсом, например:

class Bar : IInterface<String>, IInterface<Int32> {
    String Foo();
    Int32 IInterface<Int32>.Foo();
}

Недостатком является то, что мне приходится выполнять приведение типов каждый раз, когда я хочу получить доступ к Foo (), который имеет явный интерфейс.

Каковы наилучшие методы борьбы с этим?

Я делаю приложение, очень зависящее от производительности, поэтому я действительно не хочу делать миллион отливок в секунду. Это то, что JIT выяснит, или я должен хранить приведенную версию экземпляра в себе?

Я не пробовал этот конкретный код, но он выглядит очень близко к тому, что я делаю.

7
задан Marcus Johansson 11 July 2012 в 10:46
поделиться