Ausschließen von Typen in den allgemeinen Einschränkungen (möglich?)

Ist es möglich, bestimmte Typen aus der Menge der möglichen Typen auszuschließen, die in einem generischen Parameter verwendet werden können? Wenn das so ist, wie.

Zum Beispiel

Foo<T>() : where T != bool

würde jeden Typ außer dem Typ bool bedeuten.

Bearbeiten

Warum?

Der folgende Code ist mein Versuch, die negative Einschränkung durchzusetzen.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      var x1=Lifted.Lift("A");
      var x2=Lifted.Lift(true);
    }
    static class Lifted
    {
      // This one is to "exclude" the inferred type variant of the parameter
      [Obsolete("The type bool can not be Lifted", true)]
      static public object Lift(bool value) { throw new NotSupportedException(); }
      // This one is to "exclude" the variant where the Generic type is specified.
      [Obsolete("The type bool can not be Lifted", true)]
      static public Lifted<T> Lift<T>(bool value) { throw new NotSupportedException(); }
      static public Lifted<T> Lift<T>(T value) { return new Lifted<T>(value); }
    }

    public class Lifted<T>
    {
      internal readonly T _Value;
      public T Value { get { return this._Value; } }
      public Lifted(T Value) { _Value = Value; }
    }
  }
}

Wie Sie sehen, müssen Sie ein wenig auf die richtige Überladungsauflösung vertrauen und auf den @ jonskeet-ähnlichen bösen Code.

Kommentieren Sie den Abschnitt mit den Geschäften mit dem Beispiel für den abgeleiteten Typ aus und es funktioniert nicht.

Es wäre viel besser, die ausgeschlossene generische Einschränkung zu haben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage