私はインターフェースを持っています
interface IInterface<E>{
E Foo();
}
次に、このようなクラスを作成します
class Bar : IInterface<String>, IInterface<Int32> {
}
これは実際には非常にうまく機能しますが、次のように、インターフェイスを明示的に使用して2つの関数の1つを定義する必要があります。
class Bar : IInterface<String>, IInterface<Int32> {
String Foo();
Int32 IInterface<Int32>.Foo();
}
欠点は、明示的なインターフェイスを持つFoo()に到達するたびにキャストを実行する必要があることです。
これに対処する際のベストプラクティスは何ですか?
私はパフォーマンスに非常に依存するアプリケーションを実行しているので、1秒あたり100万回のキャストを実行したくありません。これはJITが理解するものですか、それともインスタンスのキャストバージョンをそれ自体に保存する必要がありますか?
私はこの特定のコードを試していませんが、私が行っていることに非常に近いように見えます。