基本上,我想创建一个方法,它将基类作为参数,并且可以用于派生类的“通用”
ef-code-first 类:
基类
public abstract class BaseClass
{
public int Id { get; set; }
public string Name { get; set; }
}
派生类:
public class DerivedA:BaseClass
{
public string AValue {get;set;}
...more specific fields
}
public class DerivedB:BaseClass
{
public string BValue {get;set;}
..... more specific fields
}
我将这些稍微不同的对象称为“通用方法”:
System.Data.Entity.DbSet<DerivedA> _dA....
System.Data.Entity.DbSet<DerivedB> _dB....
genericMethod(_dA.Where(a => a.Name.StartsWith("a name")))); //<-contains records
genericMethod(_dB.Where(a => a.Id==5)); //<---- contains records
两个“Where...”都包含调试中的记录(单击枚举后)
现在方法:
public string genericMethod(<IQueryable>BaseClass _myClass)
{
foreach (BaseClass c in _myClass) // <-------class is empty - no records
{
// do something usefull...
}
return someResult
}
但是在方法内部时不包含任何记录。
有可能吗,我正在尝试做什么......?是否有意义?
没有设计时或编译时或运行时错误,但传递的对象在传递给方法时不包含任何记录,但它包含调用语句中的记录。
我做错了什么?
有更好的方法吗?-
我需要这个方法来操作两个以上(可能是十个)派生类,因此我希望它“通用”。
谢谢!