Le code suivant implémente une UDT qui dérive d'un générique (SortedDictionary) :
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined, MaxByteSize = 8000)]
public class udtMassSpectra : SortedDictionary<float, float>, INullable, IBinarySerialize, ICloneable, IDisposable
{
...
}
Création du type (T-SQL) :
CREATE TYPE dbo.udtMassSpectra EXTERNAL NAME MassSpectra.udtMassSpectra;
lance une exception :
Msg 10331, Level 16, State 1, Line 1 Type 'udtMassSpectra' in assembly MassSpectra' dérive d'un type générique qui n'est pas pris en charge pour un type CLR. Type CLR.
Quelle en est la raison ? Existe-t-il une solution de contournement autre que de cacher la classe de base dans un membre privé ? Ce code fonctionne bien sur un SQL-Server 2005.