1. ホーム
  2. c#

汎用的なメソッドを持つインターフェースの実装

2023-11-21 23:48:28

質問

私はこの1つに関して空白を描いていて、私が書いた以前の例を見つけることができないようです。私はクラスで一般的なインターフェイスを実装しようとしています。Visual Studio は、ジェネリック インターフェイスのすべてのメソッドを実装していないというエラーを常に生成するため、インターフェイスを実装すると、何かが正しく動作していないように思います。

以下は、私が作業しているもののスタブです。

public interface IOurTemplate<T, U>
{
    IEnumerable<T> List<T>() where T : class;
    T Get<T, U>(U id)
        where T : class
        where U : class;
}

では、私のクラスはどのようなものになるでしょうか?

どのように解決するのか?

このように、インターフェイスを作り直す必要があります。

public interface IOurTemplate<T, U>
        where T : class
        where U : class
{
    IEnumerable<T> List();
    T Get(U id);
}

そして、ジェネリッククラスとして実装することができます。

public class OurClass<T,U> : IOurTemplate<T,U>
        where T : class
        where U : class
{
    IEnumerable<T> List()
    {
        yield return default(T); // put implementation here
    }

    T Get(U id)
    {

        return default(T); // put implementation here
    }
}

あるいは、具体的に実装することも可能です。

public class OurClass : IOurTemplate<string,MyClass>
{
    IEnumerable<string> List()
    {
        yield return "Some String"; // put implementation here
    }

    string Get(MyClass id)
    {

        return id.Name; // put implementation here
    }
}