这种通用扩展方法的目的是什么?
问题描述:
我被卡在一些遗留代码,我不知道。它有什么作用?任何帮助感谢!这种通用扩展方法的目的是什么?
public static T ResolveNew<T>(this T type)
{
return UnityContainerHandler.Create().Resolve<T>();
}
谢谢, Drutten
答
该代码通过捕获静态已知类型传递给它作为参数的对象的解析类型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
会产生不降低可读性相同的结果。
+0
谢谢你,让我的一天! :-D – Drutten
试着写'myEntity.ResolveNew()'。 – HimBromBeere
这完全取决于'UnityContainerHandler'是什么。 – Rob