リターンタイプのインターフェイスメソッドを作成できないのはなぜList<T>ですか?このコンパイルエラーが発生しました「タイプまたは名前空間名「T」が見つかりませんでした」
interface ILoader
{
List<T> LoadValues();
}
あなたの入力に感謝します。
リターンタイプのインターフェイスメソッドを作成できないのはなぜList<T>ですか?このコンパイルエラーが発生しました「タイプまたは名前空間名「T」が見つかりませんでした」
interface ILoader
{
List<T> LoadValues();
}
あなたの入力に感謝します。
あなたのインターフェースには何があるTはずですか?コンパイラにとって、Tはその時点では不明な識別子にすぎません。
に何かを指定する必要があります。Tこれは、の型引数として使用される型ですList<T>。
達成したいことに応じて、4つのオプションがあります。
Tインターフェイス/クラスレベルでジェネリックパラメータとして宣言します。
interface ILoader<T>
{
List<T> LoadValues();
}
Tメソッドレベルでジェネリックパラメータとして宣言します。
interface ILoader
{
List<T> LoadValues<T>();
}
固定タイプをT;として割り当てます。例int(wlog):
interface ILoader
{
List<int> LoadValues();
}
Tより高いネスティングレベルでジェネリックパラメーターとして宣言します(この可能性を指摘してくれたJeppe Stig Nielsenに感謝します):
class Outer<T>
{
interface ILoader
{
List<T> LoadValues();
}
}
Tジェネリックパラメータもインターフェイスで宣言する必要があります。このようなもの:
interface ILoader<T>
{
List<T> LoadValues();
}
次のようなことをする必要があります。
interface ILoader<T>
{
List<T> LoadValues();
}
または
interface ILoader
{
List<T> LoadValues<T>();
}
または、おそらく:
interface ILoader
{
List<dynamic> LoadValues();
}
^最善のアイデアではありませんが、使用可能です。