我的目标是:
// Defines members, for the "change-log" of the API,
// if the interface has changed, the API has a new major version.
// For "automatically generating changelogs" (for major versions) of the API
interface IApp
{
static string Name { get; set; }
}
// Internal class, not for usage outside of the dll
internal static class AppConfig
{
internal static bool IsPublished;
}
// Public available members from the API
public static class App : AppConfig, IApp
{
public static string Name { get; set; }
}
现在,基于C#语言的上述结构中存在一些错误:
我目前的“解决方案”:
public static partial class App
{
internal static bool IsPublished;
}
public static partial class App
{
public static string Name { get; set; }
}
我希望将合同/接口添加到...所以,我可能会在这些方面找到一些东西,“包装”APP:
public static class App
{
private static _App app;
static App()
{
app = new _App();
}
public static string Name { get { return app.Name; } }
}
internal interface _IApp
{
string Name { get; set; }
}
internal class _App : _AppConfig, _IApp
{
public string Name { get; set; }
}
internal class _AppConfig
{
internal static bool IsPublished;
}
这是漫长,乏味和无聊的。要更新的三个位置插入一个新成员:Interface,_App-class(实现)和静态App-class(对于API用户)。
问题是什么?以前做过类似事情的人,你是怎么解决的?或者让我忘记基于接口的更改日志的想法...因为接口需要非静态对象,而我想要静态对象(至少在这个特定对象上,它是静态的!)。
PS:Atm。我将API的所有公共对象/成员读取到日志,现在是“更改日志”。但是从一个新的API开始,想做点什么......不同。 :)编辑:注意;我关心物体在“另一面”的外观,这是一件很重要的事情。调用App-members的API用户应该像这样简单(直接): System.Windows.App.Name; 这意味着“外部类”(或者你想看它)是一个静态对象。
最后注意:我有几个(12-15)这个“类型”的对象,所以我想要一个优雅的结构,对于所有对象,所有对象都是相似的,所以如果你了解一个对象,你就会知道它们。含义:如果一个对象具有接口,则所有其他对象也具有接口。如果一个对象被命名为“AppConfig”,你可以打赌你的生活,另一个对象也有一个名为“OtherConfig”的类。 :)
答案 0 :(得分:0)
听起来你正试图尝试不同的口味"同一类。每个人都分享一些共同的功能?如果是这样,我会使用抽象类作为基础而不是接口。然后,从那个派生其他类。与接口不同,抽象类将允许您在父级别提供实现(例如:将对象保存到磁盘或数据库)。您可以在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/sf985hc5.aspx。
我也同意菲尔科列夫的观点,这听起来并不像你想要一个静态类。