C# 来自外部类c的隐式类型#
如何使所需的代码在下面工作:C# 来自外部类c的隐式类型#,c#,generics,types,C#,Generics,Types,如何使所需的代码在下面工作: 类程序{ 静态void Main(字符串[]参数){ 列表字符串=新列表(); List ints=新列表(); 列表字符=新列表(); 结果=新结果(); Type resultingType=results.resultingType; if(resultingType==typeof(string)){ strings=results.strings; } if(resultingType==typeof(int)){ ints=results.ints; }
类程序{
静态void Main(字符串[]参数){
列表字符串=新列表();
List ints=新列表();
列表字符=新列表();
结果=新结果();
Type resultingType=results.resultingType;
if(resultingType==typeof(string)){
strings=results.strings;
}
if(resultingType==typeof(int)){
ints=results.ints;
}
if(resultingType==typeof(char)){
chars=results.chars;
}
//渴望的
List resultingtypelist=results.ResultsList;//但不允许
}
}
公开课成绩{
公共列表字符串=新列表(){“aaa”、“bbb”、“ccc”};
public List ints=new List(){1,2,3,};
public List chars=new List(){'a','b','c'};
公共类型结果类型{
获取{return typeof(int);}//硬编码演示
}
//所需--列表的可访问性设置为“专用”
公共列表结果列表{
得到{
if(ResultingType==typeof(string)){
返回字符串;
}
if(ResultingType==typeof(int)){
return int;//硬编码的演示
}
if(ResultingType==typeof(char)){
返回字符;
}
}
}
}
产生的错误是“'TestTyping.Results.ResultingType'是一个'property',但像'type'一样使用”如果我理解您的意图,您将无法在编译时知道
ResultsList
的数据类型,因此不可能使用泛型。您必须执行以下操作:
public IList ResultsList
{
get
{
if (ResultingType == typeof(string))
{
return strings;
}
if (ResultingType == typeof(int))
{
return ints; //hardcoded demo
}
if (ResultingType == typeof(char))
{
return chars;
}
// not one of the above types
return null;
}
}