2016-01-22 86 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