这个通用扩展方法的目的是什么?
What is the purpose of this generic extension method?
我在这里遇到了一些我无法理解的遗留代码。它有什么作用?任何帮助表示赞赏!
public static T ResolveNew<T>(this T type)
{
return UnityContainerHandler.Create().Resolve<T>();
}
此代码通过捕获作为参数传递给它的对象的静态已知类型来解析类型 T
。对象本身被忽略。
换句话说,你可以这样做:
MyClass obj = new MyClass();
MyClass res = obj.ResolveNew();
这会调用扩展程序 ResolveNew<MyClass>
,而后者又会 return
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
会在不降低可读性的情况下产生相同的结果。
我在这里遇到了一些我无法理解的遗留代码。它有什么作用?任何帮助表示赞赏!
public static T ResolveNew<T>(this T type)
{
return UnityContainerHandler.Create().Resolve<T>();
}
此代码通过捕获作为参数传递给它的对象的静态已知类型来解析类型 T
。对象本身被忽略。
换句话说,你可以这样做:
MyClass obj = new MyClass();
MyClass res = obj.ResolveNew();
这会调用扩展程序 ResolveNew<MyClass>
,而后者又会 return
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
会在不降低可读性的情况下产生相同的结果。