如何为Types创建扩展方法

我正在编写一个扩展方法来解析任何给定类型的JSON字符串。 我想在类型上使用方法而不是像我们已经知道的许多示例那样的实例,但我有点觉得Visual Studio不支持它。 有人可以在这里启发我吗? 以下是方法:

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; } 

我想以这种方式调用方法:

 var instance = MyClass.ParseJson(text); 

谢谢

简短的回答是无法做到; 扩展方法需要处理某个实例。

要使用扩展方法,您必须执行以下操作:

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

令牌“MyClass”不是Type instamce intself,但是使用typeof将获得一个要操作的Type。 但这怎么比这更好:

 var instance = JsonUtility.ParseJson(text); 

编辑:实际上,扩展方法的代码仍然不能做你想要的。 它将始终返回“Type”对象,而不是该T​​ype的实例。

您无法创建适用于该类型本身的扩展方法。 它们只能在类型的实例上调用。