2016-12-06 2 views
0

Salut, existe-t-il une solution de contournement pour créer une classe qui a à la fois struct et string comme contrainte générique?Contrainte générique de structure et de chaîne au niveau de la classe

public class AutoEncryptor<T> where T : struct, string { 
{ 
     private T? _value; 

     // codes removed for brevity 
} 

Mon but est de me sauver de les tracas de créer des méthodes en double avec la même structure, mais la différence est, l'autre accepte une chaîne et l'autre accepte struct (types de valeur).

+0

Non, ce n'est pas possible. – Enigmativity

+0

Même si vous le pouviez, cela n'aurait aucun sens d'avoir le type 'string?'. – Enigmativity

+0

yup, j'espérais s'il y avait une solution de contournement, permettez-moi de reformuler ma question. :) – arvstracthoughts

Répondre

4

Non, ce n'est pas possible. La meilleure approche consiste à utiliser une classe de base générique abstraite et à se spécialiser pour string et struct.

public abstract class AutoEncryptorBase<T> 
{ 
    protected T _value; 
} 

public class AutoEncryptor<T> : AutoEncryptorBase<T?> where T : struct 
{ 
} 

public class TextAutoEncryptor : AutoEncryptorBase<string> 
{ 
}