![](/img/trans.png)
[英]In C# how can I create an IEnumerable<T> class with different types of objects>
[英]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.