Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这种通用扩展方法的目的是什么?_C#_Generics_Extension Methods - Fatal编程技术网

C# 这种通用扩展方法的目的是什么?

C# 这种通用扩展方法的目的是什么?,c#,generics,extension-methods,C#,Generics,Extension Methods,我在这里被一些遗留代码卡住了,我想不出来。它有什么作用?感谢您的帮助 public static T ResolveNew<T>(this T type) { return UnityContainerHandler.Create().Resolve<T>(); } publicstaticresolvetnew(此T类型) { 返回UnityContainerHandler.Create().Resolve(); } 此代码通过捕获作为参数传递给它的对象的静态

我在这里被一些遗留代码卡住了,我想不出来。它有什么作用?感谢您的帮助

public static T ResolveNew<T>(this T type)
{
    return UnityContainerHandler.Create().Resolve<T>();
}
publicstaticresolvetnew(此T类型)
{
返回UnityContainerHandler.Create().Resolve();
}

此代码通过捕获作为参数传递给它的对象的静态已知类型来解析类型
T
。对象本身被忽略

换句话说,您可以这样做:

MyClass obj = new MyClass();
MyClass res = obj.ResolveNew();
这将调用扩展名
resolvew
,该扩展名将返回

UnityContainerHandler.Create().Resolve<MyClass>();
这样称呼它

var res = Util.ResolveNew<MyClass>(); // assuming Util is the name of the static class
var res=Util.ResolveNew();//假设Util是静态类的名称

将在不降低可读性的情况下产生相同的结果。

通过编写
myEntity.ResolveNew()
尝试一下。这完全取决于
UnityContainerHandler
是什么。谢谢,伙计,让我开心一天吧!:-D
var res = Util.ResolveNew<MyClass>(); // assuming Util is the name of the static class