2016-04-28 5 views
0

なぜこれは機能しませんか? Generic<T>は、インターフェイスメンバー 'NormalInt.bsPro(LPP)'を実装していないと訴えています。 私は明示的にインターフェイスを実装しようとしましたが、まだ運がありません!インタフェースに準拠した一般的なクラス

class SomeType { } 

interface NormalInt 
{ 
    void bsPro(SomeType body); 
} 

class Generic<T>: NormalInt 
    where T : SomeType 
{ 

    public void bsPro(T body) 
    { 

    } 
} 

答えて

2

インターフェイスからこのメソッドを実装する必要があります。特にのparamsでSomeTypeインスタンスを期待

public void bsPro(SomeType body)

EDIT:あなたは、インターフェイスがジェネリック行い、その後、例えばimlpementingクラスを制約する必要が

public class SomeType 
{ 
    public void Hello() 
    { 
     Console.WriteLine("Hello"); 
    } 
} 

public interface NormalInt<T> 
{ 
    void bsPro(T body); 
} 

public class Generic<T> : NormalInt<T> 
    where T : SomeType 
{ 
    public void bsPro(T body) 
    { 
     body.Hello(); 
    } 
} 

public class Program 
{ 
    private static void Main(string[] args) 
    { 
     var g = new Generic<SomeType>(); 
     var s = new SomeType(); 

     g.bsPro(s); 
    } 
} 

私は上記があなたにとって有効であると信じています。

+0

TがSomeTypeの型です...多型に何が起こったのかo_O – schwarz

+0

これは私が知っている...しかし、まだありがたいです:) – schwarz

+1

@schwarzこれは多形性ではなく、これは分散です。 'Dog'は' Animal'を持つ(多形体)のサブタイプですが、 'List 'は 'List 'のサブタイプではありません。 –

関連する問題