格式为 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 引用,最好将其实现为引用类型,否则您将在所有地方装箱值类型。

是否要实现值相等语义、比较逻辑等由您决定。这些都很简单。