因此,用于创建结构化XML,其中结构是通过某种类结构定义的。是否有一个很好的设计模式来包装语言,以便只能定义操作?
每个项目都包含自己的XElement)
我正在尝试构建一个框架,使得孤立无法实现,只有有效的组合可以工作,有效的组合可以从项目的实例中移动。
相互依赖的原因在于使用Add(common interface or superclass)
或AddAfterSelf(common interface or superclass)
等方法需要已经创建了子/兄弟。如果构造函数是公共的,那么您可以直接创建一个孤儿。
示例:
var msb=new MSBuildDoc();
var mainTarget=new MSBuildtarget(); //created as orphan
msb.Add(mainTarget); // add is free to accept anything even invalid child types
使用Create方法(静态或非静态)会直接创建孤儿。
使用AddSubType方法需要subType的实现细节(构建它所需的内容)才能在父级上生效。
示例:
var x=new MSBuildDoc();
var mainTarget=x.AddTarget("Main") //AddTarget method is defined in the parent class
.SetAttributeFluent("BuildInParallel","true");
mainTarget.AddBuildTask(alltargets);
我意识到制作一个详尽的包装几乎是毫无意义和荒谬的。我试图将我在项目中使用的极少部分包装起来,以便核心类具有可读性和可维护性。
答案 0 :(得分:0)
您可以简单地要求每种类型的构造函数都需要一个父节点参数:
var msb = new MSBuildDoc();
var mainTarget = new MSBuildtarget( msb ); // constructor calls msb.Add(m_XElem)
当您想要避免孤立对象时,此模式并不罕见。或者,您可以使用完整的builder pattern,并进行类型构建并返回其潜在的孩子。