C # Изменение универсального класса на подкласс - PullRequest
0 голосов
/ 26 апреля 2019

В настоящее время я пытаюсь превратить суперкласс в один из его подклассов, используя дженерики, но безуспешно. Должен ли я просто изменить интерфейс на класс снова и использовать суперкласс. Я понятия не имею, как это сделать.

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. После этого он попытается определить его тип и отправить объект другому методу, предназначенному для этого объекта.

1 Ответ

1 голос
/ 26 апреля 2019

Мне действительно не нравится ваш подход, но вы можете просто привести объект, если вы уже проверили тип.

if(typeof(T) == typeof(Person))
{
     Person person = (Person) item;
...