2017-10-14 83 views
0

所以,我正在玩一些模块的可能性,我正在构建一个应用程序,我想对它们进行版本化。是否可以使用格式为1.0.0的结构?

这些模块是dll实现一个接口与该模块版本的属性。格式应该是“Major.Minor.Build”。

如果我创建一个类型为String的属性,则存在像“Major.Minor”或“Major.Minor.Build.Revision”这样的版本的可能性。我想阻止这一点。

所以我有一个类似Double的结构,但有第三个数字的想法。我的问题是现在,这是否可能,如果是的话,我该如何实现这样的事情?

在课堂上就应该是这样的:

public class MyModuleContext : IModuleContext 
{ 
    public ModuleVersion Version { get; set; } = 1.0.0; 
    // more interface things ... 
} 

感谢您的帮助:)

+0

看看System.Version类,并使用3构建组件 – ASh

回答

1

只需创建一个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引用,你最好将它作为引用类型来实现,否则你将在整个地方装入值类型。

如果你想实现值相等的语义,比较逻辑等,这取决于你。这是非常平凡的。

相关问题