我目前正在尝试使用泛型将超类更改为其子类之一,但没有成功。我是否应该再次将接口更改为类并使用超类。我不知道该怎么做。
public static Boolean AddorUpdateItem<T>(int id, String database, ref T item) where T : Item
{
if(typeof(T) == typeof(Person)){
if (ReturnItem(id, database) == null)
{
ChangeType(Item item, Person person);
Person person = new Converter<Item, Person>(item);
return PersonOperations.AddPerson(item);
}
else
{
return PersonOperations.UpdatePerson(id, item);
}
}
return false;
}
物品类
public class Item
{
public string Name{
get;
set;
}
public int ID{
get;
set;
}
}
人员班
public class Person : Item
{
private int reward_point;
public String FName
{
get;
set;
}
//More variables below.
我希望将此项目类型转换为人员类型,以便.addPerson或.updatePerson方法可以接受该类。或者换句话说,我希望addorupdate方法接受作为Item超类的子类的单个对象。然后,它将尝试确定其类型,并将该对象发送到围绕该对象设计的另一种方法。
答案 0 :(得分:1)
我真的不喜欢您的方法,但是如果您已经检查了类型,就可以投射对象。
if(typeof(T) == typeof(Person))
{
Person person = (Person) item;