我正在处理两个类似于以下结构的层次结构 -
层次结构1:
等级制度2:
现在我想实现两个行为:
首先,我想要一个ContentProperties属性的属性,这样我就可以将其推广到Content的所有子类。然后,根据所需的子类型,在子类中独立地分配它们。
像这样的东西。
"...等等其他子类也是如此。"
"其次,我想限制一种类型的子类只能分配相应类型的属性。"
"例如:"
我可以通过将单个属性保存在单独的子类中来实现第二种行为,但这将与我的第一种行为相矛盾。而且,我不想通过创建两个单独的对象来保留冗余数据。我可以使用 check-in 属性设置器或使用设置器方法来实现类似的功能,但它不会是完全相同的行为。
有人能提供建议吗?
如果标题导致任何误解,对不起。
层次结构1:
public class Content
{
}
public class Text : Content
{
}
public class Image : Content
{
}
等级制度2:
public class ContentProperties
{
}
public class TextProperties : ContentProperties
{
}
public class ImageProperties : ContentProperties
{
}
现在我想实现两个行为:
首先,我想要一个ContentProperties属性的属性,这样我就可以将其推广到Content的所有子类。然后,根据所需的子类型,在子类中独立地分配它们。
像这样的东西。
public class Content
{
public ContentProperties Properties {get;set;}
}
public class Text : Content
{
public Text()
{
this.Properties = new TextProperties();
}
}
"...等等其他子类也是如此。"
"其次,我想限制一种类型的子类只能分配相应类型的属性。"
"例如:"
Text text = new Text();
text.Properties = new ImageProperties(); //This should give an error - should not be possible.
我可以通过将单个属性保存在单独的子类中来实现第二种行为,但这将与我的第一种行为相矛盾。而且,我不想通过创建两个单独的对象来保留冗余数据。我可以使用 check-in 属性设置器或使用设置器方法来实现类似的功能,但它不会是完全相同的行为。
有人能提供建议吗?
如果标题导致任何误解,对不起。
if (item is Text textContentItem)
这样的结构,所以你总是会准确地知道你会得到什么 ;) - Icepickle