簡體   English   中英

創建參數類型的對象

[英]Create object of parameter type

嘿。 是否有可能允許用戶傳遞某種類型的參數並實例化該類型的新對象的方法? 我想做這樣的事情:(我不知道泛型是否是可行的方法,但可以嘗試一下)

    public void LoadData<T>(T, string id, string value) where T : new()
    {

        this.Item.Add(new T() { ID=id, Val = value});

    }

上面的方法不起作用,但是其想法是用戶傳遞他們要實例化的對象類型,並且該方法將基於這些參數填寫詳細信息。 我可以只傳遞一個Enum參數並執行一個Switch並基於該參數創建新對象,但是有更好的方法嗎? 謝謝

唯一的方法是添加一個接口,該接口還指定您要設置的參數:

public interface ISettable
{
    string ID { get; set; }
    string Val { get; set; }
}

public void LoadData<T>(string id, string value) where T : ISettable, new()
{
    this.Item.Add(new T { ID = id, Val = value });
}

不幸的是,目前我無法測試進行驗證。

如果IDVal屬性來自公共基類或接口,則可以約束T繼承該類型。

例如:

public void LoadData<T>(string id, string value) where T : IMyInterface, new()

然后,您可以在T實例上使用IMyInterface所有成員。

如果它們只是碰巧具有相同名稱的不同類型中的不相關屬性,則必須使用反射。

另外,您需要從參數列表中刪除T,

更具動態類型的語言可以輕松做到這一點。 我相信C#可能實現,但需要更多的努力。 可能會有一些反射庫可以在這里為您提供幫助。

為什么在調用方法時不只是創建對象? 您想做的事情對我來說似乎過於復雜。

暫無
暫無

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

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