1

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

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

      // codes removed for brevity
}

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

4

1 に答える 1

4

いいえ、できません。最良のアプローチは、抽象ジェネリック基本クラスを使用して、 と に特化することstringですstruct

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

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

public class TextAutoEncryptor : AutoEncryptorBase<string>
{
}
于 2016-12-06T03:04:58.163 に答える