diff options
author | Marek Safar <marek.safar@gmail.com> | 2019-10-16 13:21:18 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2019-10-16 21:05:03 +0300 |
commit | be6f43c80e88ec0613c35714bac9c110d4012acb (patch) | |
tree | c20f4559f1f6d9b474c2292b578ff88f5504141c /mcs/class/referencesource | |
parent | cd6e574b87b4746afa980165a52e0eb0a95be58e (diff) |
[System] Add reflection dependency tracking
for built-in type converters
Diffstat (limited to 'mcs/class/referencesource')
-rw-r--r-- | mcs/class/referencesource/System/compmod/system/componentmodel/ReflectTypeDescriptionProvider.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mcs/class/referencesource/System/compmod/system/componentmodel/ReflectTypeDescriptionProvider.cs b/mcs/class/referencesource/System/compmod/system/componentmodel/ReflectTypeDescriptionProvider.cs index 0aa50d23fb2..fd57c1c3a73 100644 --- a/mcs/class/referencesource/System/compmod/system/componentmodel/ReflectTypeDescriptionProvider.cs +++ b/mcs/class/referencesource/System/compmod/system/componentmodel/ReflectTypeDescriptionProvider.cs @@ -107,6 +107,35 @@ namespace System.ComponentModel { /// add attributes directly as metadata. /// </devdoc> private static Hashtable IntrinsicTypeConverters { + #if MONO + // TODO: typeof (BooleanConverter) would work better + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.BooleanConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.ByteConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.SByteConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.CharConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.DoubleConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.StringConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.Int32Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.Int16Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.Int64Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.SingleConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.UInt16Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.UInt32Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.UInt16Converter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.TypeConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.CultureInfoConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.DateTimeConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.DateTimeOffsetConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.DecimalConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.TimeSpanConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.GuidConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.ArrayConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor()", "System.ComponentModel.CollectionConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor(System.Type)", "System.ComponentModel.EnumConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor(System.Type)", "System.ComponentModel.ReferenceConverter")] + [System.Runtime.CompilerServices.PreserveDependency (".ctor(System.Type)", "System.ComponentModel.NullableConverter")] + #endif + get { // It is not worth taking a lock for this -- worst case of a collision // would build two tables, one that garbage collects very quickly. |