簡體   English   中英

如何在C#的集合中保存不同類型的對象?

[英]How can I hold objects of different types in a collection in c#?

我想在同一集合中保存不同類型的對象,但是無法解決問題。

public class SetupStep
{
   public ObservableCollection</*Picture- or ParameterContaienr*/> Containers {get; set;}
}

public class PictureContainer
{
   public ObservableCollection<Picture> Content {get; set;}
}

public class ParameterContainer
{
   public ObservableCollection<Parameter> Content {get; set;}
}

我認為這可以通過接口和泛型解決,但是到目前為止我還沒有找到可行的解決方案。 最后,容器集合將綁定到WPF中ScatterView的ItemsSource,后者應顯示具有不同內容的各個容器。

使它們實現相同的接口:

public interface IContainer
{
    // common properties
}

public class Picture: IContainer
{
   // prop
}

public class Parameter: IContainer
{
   //prop
}

public class SetupStep
{
   public ObservableCollection<IContainer> Containers {get; set;}
}

這里是如何填寫您的收藏:

SetupStep step = new SetupStep();
step.Containers = new ObservableCollection<IContainer>();

Parameter p = new Parameter();
Picture pic = new Picture();

step.Containers.Add(p);
step.Containers.Add(pic);

您也可以使用通用解決問題

public interface BaseContainer
{
    // common properties
}

public class Picture : BaseContainer
{

}

public class Parameter : BaseContainer
{

}
interface SetupStep<T> where T:BaseContainer
{
    ObservableCollection<T> Containers { get; set; }
}

public class PictureContainer:SetupStep<Picture>
{

    public ObservableCollection<Picture> Containers { get; set; }
}

public class ParameterContainer : SetupStep<Parameter>
{
    public ObservableCollection<Parameter> Containers { get; set; }
}

暫無
暫無

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

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