リターンタイプのインターフェイスメソッドを作成できないのはなぜ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();
}
^最善のアイデアではありませんが、使用可能です。