2016-10-13 5 views
2

と同じインターフェイスを持つ型を返すことができません。機能は、私は簡単なプログラムを持って戻り値の型

Aのインスタンスは下駄から返すことができないのはなぜ
class Program 
    { 
     static void Main(string[] args) 
     { 
      InA testing = GetA(); 
     } 

     static InA GetA<InA>() 
     { 
      return new A(); 
     } 
    } 

    public interface InA 
    { 
     void test(); 
    } 

    public class A : InA 
    { 
     public void test() 
     { 
      throw new NotImplementedException(); 
     } 
    } 

()? AはInAインターフェイスを実装します。

enter image description here

+1

「GetA 」とは何ですか?つまり、メソッドの範囲では、 'InA'はインタフェースではなくジェネリック型を指します。慣例として、インタフェースが文字 'I'で始まるのと同じように、すべてのジェネリック型は 'TVal 'のように文字' T 'で始めるべきです。そうすれば、あなたが扱っていることは明らかです。 – spender

答えて

5

その場合のINAは、インタフェース名としてgeneric argumentとしないように処理されます。 GetAメソッドの汎用引数を別の方法で宣言するか、まったく削除する必要があります。これはうまくいくはずです:

static InA GetA() 
{ 
    return new A(); 
} 
関連する問題