我有一个包含IEnumerable的对象,其中T可以是我的数据模型中的几个类。
假设T可以是员工或雇主。现在有一个裸露的对象,知道它肯定持有IEnumerable我怎么能说它持有哪种类型?员工还是雇主?或者更好的我如何将对象转换或反映到IEnumerable?
如果我在设置对象时保留类型,它会帮助我将对象投射或反射到最初的对象上吗?
如果我保留这些
object source = db.Employees; //IEnumerable<Employee>
type dataType = Employee;
我可以投射或反映回IEnumerable of Employees吗?
答案 0 :(得分:2)
一般情况下,您可以使用 Reflection :
Type typeOfSource = source.GetType().GetGenericArguments()[0];
if (typeOfSource == typeof(Employee)) {
...
}
else if (typeOfSource == typeof(Employer)) {
...
}
在一个简单的情况下过冲只有两种类型,但如果你有一个真正的纠缠码,可以有用
答案 1 :(得分:0)
您可以尝试as
运算符
var otherEmployess = source as IEnumerable<Employee>;
if(otherEmployess != null)
{
// use otherEmployees
}
或者你可以对IEnumerable<Employee>
提出异议,但如果类型不是IEnumerable<Employee>