2016-12-06 13 views
0

こんにちは、一般的な制約として構造体と文字列の両方を持つクラスを作成するための回避策はありますか?クラスレベルの構造体と文字列ジェネリック制約

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

     // codes removed for brevity 
} 

私の目標は、同じ構造を持つ重複したメソッドを作成する手間から自分自身を保存することですが、違いは、他の一つは、文字列を受け入れ、他の一つは、構造体(値型)を受け入れ、です。

+0

いいえ、不可能です。 – Enigmativity

+0

たとえ文字列 'string? 'を持つことができても意味がありません。 – Enigmativity

+0

ええと、私は回避策があれば、私の質問を言い換えてほしいと思っていた。 :) – arvstracthoughts

答えて

4

いいえ、不可能です。最良の方法は、抽象ジェネリック基本クラスを使用し、とstructに特化することです。

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

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

public class TextAutoEncryptor : AutoEncryptorBase<string> 
{ 
}