2017-10-14 7 views
0

私は構築しているアプリケーションのモジュールの可能性を少しは試しています。私はそれらをバージョンアップしたいと思います。1.0.0形式の構造体は使用できますか?

これらのモジュールは、このモジュールのバージョンのプロパティを持つインターフェイスを実装しています。フォーマットは "Major.Minor.Build"でなければなりません。私は、String型のプロパティを作成した場合

、「MAJOR.MINOR」または「Major.Minor.Build.Revision」のようなバージョンの可能性が存在します。私はそれを防止したい。

私はDoubleのような構造体を考えましたが、3桁目です。私の質問は今、これも可能ですし、はいの場合、どうすればこのようなものを実装できますか?

クラスでは、次のようになります。あなたの助けを

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の参照を渡すようになると、これを参照型として実装するほうが良いか、またはすべての場所で値型をボクシングすることになります。

あなたは価値の平等のセマンティクスを実装する場合、それはすべての非常に簡単だなど、あなた次第比較ロジックです。

関連する問題