这种通用扩展方法的目的是什么

本文关键字:是什么 方法 扩展 | 更新日期: 2023-09-27 18:31:24

我在这里停留了一些我无法弄清楚的遗留代码。它有什么作用?任何帮助表示赞赏!

public static T ResolveNew<T>(this T type)
{
    return UnityContainerHandler.Create().Resolve<T>();
}

这种通用扩展方法的目的是什么

此代码通过捕获作为参数传递给它的对象的静态已知类型来解析T类型。对象本身将被忽略。

换句话说,您可以这样做:

MyClass obj = new MyClass();
MyClass res = obj.ResolveNew();

这将调用扩展ResolveNew<MyClass>,而扩展又会返回

UnityContainerHandler.Create().Resolve<MyClass>();

这种方法的效用充其量是可疑的,因为参数type的值被删除了。编写不同的实用程序

public static T ResolveNew<T>() {
    return UnityContainerHandler.Create().Resolve<T>();
}

并这样称呼它

var res = Util.ResolveNew<MyClass>(); // assuming Util is the name of the static class

将在不降低可读性的情况下产生相同的结果。