だから私はインターフェースを持っています:
interface IFoo
{
int Bar();
int this[int i] {get; set;}
}
そしてそれから派生するクラス
class Foo : IFoo
{
public int IFoo.Bar()
{
//Implementation
{
public int IFoo.this[int i]
{
//Implementation
}
}
今、私はこれをやろうとしています:
var fooey = new Foo();
int i = Fooey.Bar();
またはこれ:
int i = Fooey[4];
私はこれらが適切に機能することを期待します。ただし、コンパイラは、そのようなメンバーが存在しないかのようにエラーを生成します。何故ですか?キャストできることは承知していますがFoo as IFoo
、キャストはパフォーマンスにコストがかかることも承知しています。これが、そもそもインターフェイスを使用する理由であることがよくあります。
編集1:これらは生成されたエラーです
「Foo」には「Bar」の定義が含まれておらず、「Foo」タイプの最初の引数を受け入れる拡張メソッド「Bar」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
「タイプ「Foo」の式にインデックスを適用できません」