在这种情况下,我可以使用C#List吗?
我有一个类似类型的操作列表,需要为其创建不同的类在这种情况下,我可以使用C#List吗?,c#,list,unique,C#,List,Unique,我有一个类似类型的操作列表,需要为其创建不同的类ActionClass1,ActionClass2。 此外,我有不同的网站,我需要执行不同的行动清单。请注意,此列表的内容将取决于网站 我想开发一个GUI,以便能够使用c#和WPF编辑在给定站点SiteClass上执行的操作 我现在的想法是做以下工作: 从一个普通的抽象动作类AbstractActionClass中对不同的动作类ActionClass1进行子类化 创建AbstractActionClass的ActionList,其中将包含不同的操作
ActionClass1
,ActionClass2
。
此外,我有不同的网站,我需要执行不同的行动清单。请注意,此列表的内容将取决于网站
我想开发一个GUI,以便能够使用c#和WPF编辑在给定站点SiteClass
上执行的操作
我现在的想法是做以下工作:
AbstractActionClass
中对不同的动作类ActionClass1
进行子类化AbstractActionClass
的ActionList
,其中将包含不同的操作作为具体实现(例如ActionClass1
等)SiteClass
实例的列表SiteList
,该列表将包含站点及其相应的操作列表和附加信息(如站点位置等)ActionList
,并在GUI中设置样式,以便具有相同ActionList
的所有站点看起来都相同(例如,颜色相同)。因此,我需要能够比较SiteList
中SiteClass
的每个实例的ActionList
,以检查它们是否不同,找出有多少不同的实例,然后在GUI中相应地设置它们的样式
因此,我的问题是:我能否在SiteClass
中使用ActionList
类型的列表,以便执行诸如“Unique”等比较,以找出ActionList
内部ActionList
的唯一出现次数,并将此信息用于样式设置?有更好的办法吗?简短的回答:有
详细的回答。您可以创建一个列表
,要处理不同的渲染,可以采取两种方法:
public abstract string ClassType { get; }
public override string ClassType { get { return "ActionClass1";}}
然后在渲染代码中,按照
switch (ac.ClassType)
{
case "ActionClass1":
/// render according to class 1;
break;
case "ActionClass2":
/// render according to class 2;
break;
}
if (ac is ActionClass1)
{
/// render according to class 1
}
else if (ac is ActionClass2)
{
/// render according to class 2
}
public class ActionClassList : List<ActionClass>
{
public abstract string ClassType { get;}
}
公共类ActionClassList:列表
{
公共抽象字符串类类型{get;}
}
列表
,要处理不同的渲染,可以采取两种方法:
public abstract string ClassType { get; }
public override string ClassType { get { return "ActionClass1";}}
然后在渲染代码中,按照
switch (ac.ClassType)
{
case "ActionClass1":
/// render according to class 1;
break;
case "ActionClass2":
/// render according to class 2;
break;
}
if (ac is ActionClass1)
{
/// render according to class 1
}
else if (ac is ActionClass2)
{
/// render according to class 2
}
public class ActionClassList : List<ActionClass>
{
public abstract string ClassType { get;}
}
公共类ActionClassList:列表
{
公共抽象字符串类类型{get;}
}
在接收端,您总是接受ActionClassList,但它可以是您得到的派生类之一。是。在C#中可以通过多种方式实现这一点,但C#list在这方面不是一个坏主意,因为您对C#list很熟悉,并且可以更好地理解这一想法,所以我不会说使用C#list有什么错。是的。在C#中可以通过多种方式实现这一点,但C#list在这方面并不是一个坏主意,因为您对C#list很熟悉,也能更好地理解这一点,所以我不会说使用C#list有什么错。MVVM和日期模板是一个不错的选择。在viewmodel中,您将拥有
ObservableCollection
,其中T
是抽象类或简单接口,用于访问视图中所需的属性/方法Unique
属性必须通过向该集合添加/从中删除的方法来处理。MVVM和日期模板是解决方法。在viewmodel中,您将拥有ObservableCollection
,其中T
是抽象类或简单接口,用于访问视图中所需的属性/方法Unique
属性必须由添加到该集合或从中删除的方法处理。