格式为 1.0.0 的结构是否可行?
Is a struct with the format 1.0.0 possible?
所以我正在尝试为我正在构建的应用程序使用模块的可能性,我想对它们进行版本控制。
这些作为 dll 的模块实现了一个带有 属性 的接口,用于此模块的版本。格式应为 "Major.Minor.Build".
如果我创建一个 属性 类型的字符串,则可能存在像 "Major.Minor" 或 "Major.Minor.Build.Revision" 这样的版本。我想阻止这种情况。
所以我有了一个类似 Double 但有第三个数字的结构的想法。我现在的问题是,这是否可能,如果可以,我该如何实现这样的事情?
在 class 中应该是这样的:
public class MyModuleContext : IModuleContext
{
public ModuleVersion Version { get; set; } = 1.0.0;
// more interface things ...
}
感谢您的帮助:)
只需创建一个满足您需求的class
:
public class Version: IVersion
{
public int Major { get; }
public int Minor { get; }
public int Build { get; }
public override string ToString =>
$”{Major}.{Minor}.{Build}”
public Version(int major, int minor, int build)
{
//omitted argument validation
Major = major;
Minor = minor;
Build = build;
}
}
如果您主要要传递 IVersion
引用,最好将其实现为引用类型,否则您将在所有地方装箱值类型。
是否要实现值相等语义、比较逻辑等由您决定。这些都很简单。
所以我正在尝试为我正在构建的应用程序使用模块的可能性,我想对它们进行版本控制。
这些作为 dll 的模块实现了一个带有 属性 的接口,用于此模块的版本。格式应为 "Major.Minor.Build".
如果我创建一个 属性 类型的字符串,则可能存在像 "Major.Minor" 或 "Major.Minor.Build.Revision" 这样的版本。我想阻止这种情况。
所以我有了一个类似 Double 但有第三个数字的结构的想法。我现在的问题是,这是否可能,如果可以,我该如何实现这样的事情?
在 class 中应该是这样的:
public class MyModuleContext : IModuleContext
{
public ModuleVersion Version { get; set; } = 1.0.0;
// more interface things ...
}
感谢您的帮助:)
只需创建一个满足您需求的class
:
public class Version: IVersion
{
public int Major { get; }
public int Minor { get; }
public int Build { get; }
public override string ToString =>
$”{Major}.{Minor}.{Build}”
public Version(int major, int minor, int build)
{
//omitted argument validation
Major = major;
Minor = minor;
Build = build;
}
}
如果您主要要传递 IVersion
引用,最好将其实现为引用类型,否则您将在所有地方装箱值类型。
是否要实现值相等语义、比较逻辑等由您决定。这些都很简单。