Ceci n'est pas possible. cf §10.1.5 de la spécification C#. En particulier, la grammaire indique très clairement que cela n'est pas possible.
type-parameter-constraints-clauses:
type-parameter-constraints-clause
type-parameter-constraints-clauses type-parameter-constraints-clause
type-parameter-constraints-clause:
where type-parameter : type-parameter-constraints
type-parameter-constraints:
primary-constraint
secondary-constraints
constructor-constraint
primary-constraint , secondary-constraints
primary-constraint , constructor-constraint
secondary-constraints , constructor-constraint
primary-constraint , secondary-constraints , constructor-constraint
primary-constraint:
class-type
class
struct
secondary-constraints:
interface-type
type-parameter
secondary-constraints , interface-type
secondary-constraints , type-parameter
constructor-constraint
new ( )
Vous pouvez avoir une clause de garde dans le corps de la méthode:
Contract.Requires<InvalidOperationException>(!typeof(T).IsAbstract);
Merci, ça aide! Y a-t-il une raison pour que cela ne soit pas supporté dans la grammaire? – Remus