基本上,我想创建一个方法,采用一个基类作为参数,并且可以使用“通用”派生类通过相同的基类的不同的对象的方法
EF-代码 - 第一类:
基类
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
两个“哪里......”包含调试记录
现在的方法(点击枚举后):
public string genericMethod(<IQueryable>BaseClass _myClass)
{
foreach (BaseClass c in _myClass) // <-------class is empty - no records
{
// do something usefull...
}
return someResult
}
但在方法内部不包含任何记录。
是否有可能,我正在尝试做什么...? 它有道理吗?
没有设计时或编译时或运行时错误,但传递的对象在传递给方法时不包含任何记录,但它包含调用语句中的记录。
我做错了什么?
有没有更好的方法? -
我需要这种方法,操纵多于两个(也许十个)派生类,因此我希望它“通用”。
谢谢!
你确定没有编译时错误吗?我不认为你可以使用关键字“class”作为参数名,你的基类也不能工作。 – Ondra
是泛型方法将获得混合DerivedA和DerivedB实例或只是其中之一? – kabaros
昂德拉 - 对不起..为了便于阅读,简化了代码 - 当然,课程无法工作 - 将其更改为_myClass – reinhard