我们正在使用 XML,并希望在主要 XML 类及其所有组件之间有一个通用接口。但是,XML 类的子组件需要额外的方法,但它们也需要主组件的方法。似乎对继承很有用。
这是我为完成此任务而编写的一些代码。希望您可以根据使用情况对我们的目标有一个很好的了解:
using System;
namespace SampleNamespace
{
public class SampleClass
{
public static void Main()
{
var xmlDocumentFiles = new XmlDocumentFiles();
xmlDocumentFiles.Files.RootFile.SetFileName("Example.xml");
System.Console.WriteLine(
xmlDocumentFiles.Files.RootFile.GetFileName()
);
}
}
public class XmlDocumentFilesRoot
{
protected string _rootFileName;
public FilesClass Files { get { return (FilesClass) this; } }
}
public class FilesClass : XmlDocumentFilesRoot
{
public RootFileClass RootFile { get { return (RootFileClass) this; } }
}
public class RootFileClass : FilesClass
{
public void SetFileName( string newTitle )
{
_rootFileName = newTitle;
}
public string GetFileName()
{
return _rootFileName;
}
}
public class XmlDocumentFiles : RootFileClass
{
}
}
我能够投到儿童班,令我惊讶的是它运行得很好。假设除了在父类中没有意义的方法之外没有任何东西放在子类中,那么这个类结构是否会出现任何问题(奇怪的编译错误、运行时崩溃)?
有没有其他选择?我最初尝试了位于主类之外的嵌套类 + 扩展方法,但是需要大量代码来设置它。请参阅:https ://stackoverflow.com/questions/19415717/using-c-sharp-extension-methods-on-not-in-nested-classes-to-establish-a-common