2017-10-14 23 views
0

Je suis donc en train de jouer un peu avec les possibilités de modules pour une application que je construis et j'aimerais les mettre à jour.Une structure avec le format 1.0.0 est-elle possible?

Ces modules qui sont DLL implémentent une interface avec une propriété pour la version de ce module. Le format devrait être "Major.Minor.Build".

Si je crée une propriété de type String, la possibilité d'une version comme "Major.Minor" ou "Major.Minor.Build.Revision" existe. Je veux empêcher ça.

J'ai donc eu l'idée d'une structure comme Double mais avec un troisième chiffre. Ma question est maintenant, est-ce même possible et si oui, comment puis-je mettre en œuvre quelque chose comme ça?

Dans la classe, il devrait ressembler à ceci:

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

Merci pour votre aide :)

+0

jetez un oeil à la classe System.Version et faites de même avec 3 composants de construction – ASh

Répondre

1

Il suffit de créer un class qui répond à vos besoins:

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; 
    } 
} 

Si vous êtes principalement En passant des références autour, vous feriez mieux d'implémenter cela comme un type de référence ou vous serez en train de boxer le type de valeur partout. C'est à vous de décider si vous voulez implémenter la sémantique de l'égalité des valeurs, la logique de comparaison, etc. Tout cela est plutôt trivial.