簡體   English   中英

如何創建可以容納所有可用內容的類型的列表?

[英]How do I create a list of a type that can hold anything available?

我不確定如何用語言表達問題,但是我將通過顯示代碼和應用程​​序應做的事情來盡力而為。

我正在創建一個可以通過創建JSON文件來創建視頻的應用。 該文件將在Camtasia打開。

我有這個課:

class Track
{
    public string Name { get; set; }
    public bool IsLocked { get; set; } = false;
    public List<Media<Callout>> Content { get; set; }
}

媒體在此文件中:

class Media<T>
{
}

class Callout
{
}

我的問題是,軌道類中的列表不能僅包含媒體。 我需要其他東西,例如媒體或媒體

我要做的是讓Content成為Media的列表,Media可以在其中包含任何內容。

我希望我的問題很清楚,否則,我願意提供其他信息或代碼。

正如paulsm4在評論中提到的那樣,如果您確實想要任何東西 ,則可以使用List<Media<object>> 您在track.Content.Add(new Media<Image>())中遇到的問題與協方差有關協方差是一個非常高級的概念。 TL; DR是如果您進行更改

class Media<T>
{
}

class Media<out T>
{
}

那么它將起作用。

但是,我認為這不是您真正需要的答案。 當然,您在Media對象中可以擁有的東西必須受到一定的限制。 因此,解決方案是創建一個像IMediaContent這樣的接口,並要求Media中所有可能的東西來實現它。 然后,您將Media聲明為

class Media<T> where T : IMediaContent
{
}

編輯:我剛剛閱讀了有關僅需要CalloutImageText等的新評論。 然后我將這些類聲明為

class Callout : IMediaContent
{
}

暫無
暫無

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

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