簡體   English   中英

字典中的類型繼承<ulong,BaseObject>

[英]Type inheritance in Dictionary<ulong,BaseObject>

情況如下:有一個類型為BaseObject的基類,所有其他類都從該基類派生而來(即Task : BaseObject )。 還有一個繼承自Dictionary<ulong,BaseObject> BaseObjectCollection類型的基類集合,以及BaseObjectCollection繼承的其他一些集合(即TaskCollection:BaseObjectCollection )。 遍歷TaskCollection成員時,它們將顯示為BaseObject類型。 有什么方法可以使集合“更改”其值的類型,從而使其具有BaseobjectCollection的功能,但仍顯示為Dictionary<ulong,Task>而不是Dictionary<ulong,BaseObject>

您應該將BaseObjectCollection類型更改為將使用的值的類型。 例如:

public class BaseObjectCollection<T> : Dictionary<ulong, T>
    where T : BaseObject

然后,您可以使用BaseObjectCollection<Task>並且仍然是完全類型安全的。

(我將在大多數情況下親自使用組合,而不是從Dictionary<,>派生新類型Dictionary<,>但這是另一回事。)

暫無
暫無

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

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