usar porque net mvc framework desventajas asp arquitectura c# asp.net-core .net-core coreclr

c# - porque - IsGenericType & IsValueType no se encuentra en.Net Core?



desventajas de de net core (1)

Sí, se mueven en .Net Core a una nueva clase de TypeInfo . La forma de hacer que esto funcione es mediante el uso de GetTypeInfo().IsGenericType & GetTypeInfo().IsValueType .

using System.Reflection; public static class StringExtensions { public static TDest ConvertStringTo<TDest>(this string src) { if (src == null) { return default(TDest); } return ChangeType<TDest>(src); } private static T ChangeType<T>(string value) { var t = typeof(T); // changed t.IsGenericType to t.GetTypeInfo().IsGenericType if (t.GetTypeInfo().IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) { if (value == null) { return default(T); } t = Nullable.GetUnderlyingType(t); } return (T)Convert.ChangeType(value, t); } }

Tengo este código en .Net 4.6.2 y ahora trato de convertirlo en .Net core, sin embargo, estoy recibiendo un error

Error CS1061 ''Tipo'' no contiene una definición para ''IsGenericType'' y no se puede encontrar un método de extensión ''IsGenericType'' que acepte un primer argumento de tipo ''Tipo'' (¿falta una directiva de uso o una referencia de ensamblaje?)

public static class StringExtensions { public static TDest ConvertStringTo<TDest>(this string src) { if (src == null) { return default(TDest); } return ChangeType<TDest>(src); } private static T ChangeType<T>(string value) { var t = typeof(T); // getting error here at t.IsGenericType if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) { if (value == null) { return default(T); } t = Nullable.GetUnderlyingType(t); } return (T)Convert.ChangeType(value, t); } }

¿Qué es equivalente en .Net Core?

Update1

Sorprendentemente, cuando depuro el código, veo que la variable t tiene la propiedad IsGenericType , sin embargo, no puedo usar IsGenericType en el código. No estoy seguro de por qué o qué espacio de nombres necesito agregar. He añadido el using System y el using System.Runtime ambos espacios de nombres