ConsoleApplication1.Program.takeList<T>
次のエラーが表示されます: メソッド ' ( )'の型引数はSystem.ComponentModel.BindingList<T>
、使用法から推測できません。型引数を明示的に指定してみてください。
コンパイラは chooseList メソッドの戻り値の型を推測できないと思いますが、それを takeList メソッドに渡す必要があります。これを機能させる方法はありますが、 chooseList メソッドを Main 関数に分離しないでください??
class Program
{
static BindingList<int> listOfInts;
static BindingList<string> listOfStrings;
//more lists
static void takeList<T>(BindingList<T> list)
{
//do something
return;
}
static object chooseList() //instead of object i would put BindingList<T>
{
int someCondition = 0;
//code that changes someCondition so compiler doesnt know its value
switch (someCondition)
{
case 1: return listOfInts;
//more cases for more lists
default: return listOfStrings;
}
}
static void Main(string[] args)
{
Program testClass = new Program();
var chosenList = chooseList();
takeList(chosenList);
}
}
編集:
これはうまくいくはずの反対の状況です。上記のように変換したいと思います:
class Program
{
static BindingList<int> listOfInts;
static BindingList<string> listOfStrings;
//more lists
static void takeList<T>(BindingList<T> list)
{
//do something
return;
}
static void Main(string[] args)
{
Program testClass = new Program();
int someCondition = 0;
//code that changes someCondition so compiler doesnt know its value
switch (someCondition)
{
case 1:
takeList(listOfInts);
break;
//more cases for more lists
default:
takeList(listOfStrings);
break;
}
//Instead of the switch here, i would like to write takelist(doTheSwitch(someCondition));
}
}