如何控制可以添加到XElement的对象类型?

时间:2010-07-11 04:45:38

标签: c# inheritance override

有没有办法创建一个派生自XElement的类,还能控制可以添加到它的对象类型?

例如,说我有这个......

public class HtmlHead : XElement {}

但我无法覆盖Add()方法,因为它在XContainer级别下降。即使我要创建一个派生自XContainer的类,我仍然无法覆盖Add()方法。

你问我为什么要这样做?

我想确保如果我的程序编译它也正确解析HTML。例如,您只能将某些元素添加到HTML <head>代码中,因此我想确保只能添加​​支持的代码。

当然,您不会在<anchor>标记中添加<head>标记,感觉到我?

1 个答案:

答案 0 :(得分:2)

您可以通过构造函数控制传递的名称。

public class HtmlHead : XElement
{
    public HtmlHead(object content) : base("head")
    {
        this.Add(content);
    }

    public HtmlHead(params object[] content) : base("head", content) { }
}

添加项目时,会执行更改通知,或者您可以创建自定义方法来添加每个人应该使用的项目。