rei*_*ard -2 c# oop inheritance
如果我有两个派生自基类的类,我怎样才能编写一个泛型方法,它可以操作两个类的继承属性,所以我不需要编写两个方法...
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; }
}
Run Code Online (Sandbox Code Playgroud)
"通用"方法:
public string Slugify( ?????BaseClass???? record)
{
return record.slug = "...return...something...";
}
Run Code Online (Sandbox Code Playgroud)
调用如:
string a = Slugify(my_State_object); <--- not working
string b = Slugify(my_City_object); <--- not working
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:州和城市是EF-CodeFirst类.最初都有Id和slug - 字段.
然后我把它们变成了一个基类,因为我在两个(和其他)表中都有这些.
我想要一个返回slug的方法,如:
public string Slugify(string p, System.Data.Entity.DbSet<Models.BaseRecords> dbSet){ return ...}
Run Code Online (Sandbox Code Playgroud)
叫起来像
Slugify(text, my_State_object);
Run Code Online (Sandbox Code Playgroud)
以及
Slugify(otherText, my_City_object);
Run Code Online (Sandbox Code Playgroud)
两个电话都给我一个"......一些无效的参数......"错误.
对不起,这是从德国VS2010翻译的
你已经给出了答案:
public string Slugify(BaseClass record)
{
return record.slug = "...return...something...";
}
Run Code Online (Sandbox Code Playgroud)
问题是你的BaseClass应该像它的孩子一样可访问.公开它会很好:
public abstract class BaseClass ...
Run Code Online (Sandbox Code Playgroud)