如何为Types创建扩展方法

Cod*_*ism 16 c# extension-methods

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

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

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

var instance = MyClass.ParseJson(text);
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*und 20

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


Chr*_*man 7

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

var instance = typeof(MyClass).ParseJson(text);
Run Code Online (Sandbox Code Playgroud)

标记“MyClass”不是一个 Type instamce intself,但使用 typeof 会让你得到一个 Type 来操作。但这比:

var instance = JsonUtility.ParseJson<MyClass>(text);
Run Code Online (Sandbox Code Playgroud)

编辑:实际上,扩展方法的代码仍然无法满足您的需求。它将始终返回“类型”对象,而不是该类型的实例。