【发布时间】:2012-10-23 15:46:15
【问题描述】:
如果我有两个类,它们是从基类派生的,我该如何编写一个泛型方法,可以操作两个类的继承属性,所以我不需要编写两个方法...
abstract class BaseClass
{
public int Id { get; set; }
public string slug { get; set; }
}
public class State:BaseClass
{
public string StateName{ get; set; }
public string Description { get; set; }
}
public class City:BaseClass
{
public string TownName { get; set; }
public string someOtherProperty{ get; set; }
}
“通用”方法:
public string Slugify( ?????BaseClass???? record)
{
return record.slug = "...return...something...";
}
调用如下:
string a = Slugify(my_State_object); <--- not working
string b = Slugify(my_City_object); <--- not working
谢谢!
编辑: State 和 City 是 EF-CodeFirst 类。最初都有 Id 和 slug - 字段。
然后我把它们变成了一个基类,因为我在两个(和其他)表中都有这些。
我想要一个返回 slug 的方法,例如:
public string Slugify(string p, System.Data.Entity.DbSet<Models.BaseRecords> dbSet){ return ...}
像这样称呼
Slugify(text, my_State_object);
还有
Slugify(otherText, my_City_object);
两个调用都给我一个“...一些无效的参数...”错误。
对不起,这是从德语 VS2010 翻译过来的
【问题讨论】:
-
为什么不能只使用BaseClass作为参数的类型?
-
请详细说明,Slugify 方法是否需要访问派生类属性?目前它只访问 slug,它是基类的成员,因此是完全合法的。
-
定义“不工作”,我们可以帮助你。
-
您是遇到编译错误还是刚刚得到意外结果?
-
请不要在标题中使用标签:meta.stackexchange.com/questions/19190/…
标签: c# oop inheritance