【发布时间】:2013-04-02 19:01:32
【问题描述】:
我正在用 C# 编写一个泛型方法:
private T GetMamConfigurations<T>(IDictionary<string, object> items,
MaMDBEntities maMDBEntities) where T : class
{
T geoConfigs = default(T);
if (typeStr.Equals("MamConfiguration", StringComparison.OrdinalIgnoreCase))
{
geoConfigs = (T)GetGeoConfigurationNumericFromDB(items, maMDBEntities);
}
else if (typeStr.Equals("ListOfMamConfiguration", StringComparison.OrdinalIgnoreCase))
{
geoConfigs = (T)GetGeoConfigurationsPercentageFromDB(items, maMDBEntities);
}
return geoConfigs;
}
GetGeoConfigurationNumericFromDB 返回MamConfiguration
而
GetGeoConfigurationsPercentageFromDB 返回IList<MamConfiguration>
我得到编译错误:
无法将
MamConfiguration类型的表达式转换为T类型
为什么会这样?
有没有什么办法可以解决不强制这两种方法返回IList<MamConfiguration>?
【问题讨论】:
-
请在以后的帖子中更加注意格式化代码。在发布之前查看预览,并考虑这是否是真的您希望人们看到的。
-
为什么你的方法没有返回
MamConfiguration或IEnumerable<MamConfiguration>? (通过将单个结果包装在第一个分支中的列表中或在第二个分支中获取第一项。)代码对我来说看起来很奇怪,似乎它所做的只是模糊了InvalidCastException的原因。