![](/img/trans.png)
[英]C#'s IEqualityComparer<TType> similar or alternative in Swift Language
[英]Alternative way(s) of structuring these objects in C# language
我的目標是遵循以下原則:
// 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;
}
這是漫長而乏味且無聊的。 在三個要更新的地方插入一個新成員:接口,_App類(實現)和靜態App類(對於API用戶)。
有問題嗎 以前有人做過類似的事情,您是如何解決的? 或者說說讓我忘記基於接口的變更日志的想法...因為接口需要非靜態對象,而我卻需要靜態對象(至少在此特定對象上,它是靜態的!)。
PS:Atm。 我將所有公共對象/ API的成員都讀取到日志中,該日志現在為“ changelog”。 但是從一個新的API開始,想要做一些不同的事情。 :)
編輯:注意; 我關心對象在“另一側”的外觀,這很重要。 API的用戶(調用App成員)應像這樣簡單(直接):System.Windows.App.Name; 這意味着“外部類”(或者您想查看它)是一個靜態對象。
最后一點:我有幾個(12-15)這種“類型”的對象,所以我想要一個優雅的結構,所有對象的名稱都類似,因此,如果您認識一個對象,便會全部了解。 含義:如果一個對象具有一個接口,則其他所有對象也具有一個接口。 如果一個對象名為“ AppConfig”,則可以放心,另一個對象也具有一個名為“ OtherConfig”的類。 :)
聽起來您正在嘗試具有相同類別的不同“風味”。 每個人都有一些共同的功能? 如果是這樣,我將使用抽象類作為基礎而不是接口。 然后,從該類派生其他類。 與接口不同,抽象類將允許您在父級別提供實現(例如:將對象保存到磁盤或數據庫)。 您可以在這里閱讀更多信息: https : //msdn.microsoft.com/en-us/library/sf985hc5.aspx 。
我也同意Filkolev,這聽起來像您不希望使用靜態類的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.