簡體   English   中英

C#將泛型類更改為子類

[英]C# Changing a generic Class to a subclass

我目前正在嘗試使用泛型將超類更改為其子類之一,但沒有成功。 我是否應該再次將接口更改為類並使用超類。 我不知道該怎么做。

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超類的子類的單個對象。 接下來,它將嘗試確定其類型,並將對象發送到圍繞該對象設計的其他方法。

我真的不喜歡您的方法,但是如果您已經檢查過類型,則可以只投射對象。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM