Cómo crear métodos de extensión para los tipos

Estoy escribiendo un método de extensión para analizar la cadena JSON para cualquier tipo dado. Quería usar el método en tipos en lugar de instancias como muchos ejemplos que ya conocemos, pero siento que Visual Studio no lo admite. ¿Puede alguien iluminarme aquí? El siguiente es el método:

public static T ParseJson(this T t, string str) where T: Type { if (string.IsNullOrEmpty(str)) return null; var serializer = new JavaScriptSerializer(); var obj = serializer.Deserialize(str); return obj; } 

Quiero llamar al método de esta manera:

 var instance = MyClass.ParseJson(text); 

Gracias

La respuesta corta es que no se puede hacer; Los métodos de extensión necesitan trabajar en una instancia de algo.

Para utilizar el método de extensión, tendría que hacer:

 var instance = typeof(MyClass).ParseJson(text); 

El token “MyClass” no es un Instrumental de Tipo en sí mismo, pero al usar typeof obtendrá un Tipo para operar. Pero, ¿cómo es esto mejor que:

 var instance = JsonUtility.ParseJson(text); 

Edición: En realidad, el código para el método de extensión aún no haría lo que querías. Siempre devolverá un objeto “Tipo”, no una instancia de ese Tipo.

No puede crear métodos de extensión que se apliquen al tipo en sí. Solo se pueden llamar en instancias de un tipo.