这种通用扩展方法的目的是什么
本文关键字:是什么 方法 扩展 | 更新日期: 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
将在不降低可读性的情况下产生相同的结果。