2016-01-22 41 views
-2

我被卡在一些遗留代码,我不知道。它有什么作用?任何帮助感谢!这种通用扩展方法的目的是什么?

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

谢谢, Drutten

+0

试着写'myEntity.ResolveNew()'。 – HimBromBeere

+1

这完全取决于'UnityContainerHandler'是什么。 – Rob

回答

2

该代码通过捕获静态已知类型传递给它作为参数的对象的解析类型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