gpt4 book ai didi

c# - Inferred 命名空间中的类有效,但在显式命名时无效

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:01 25 4
gpt4 key购买 nike

我想使用的类是 System.Web.Mvc.DependencyResolver。以下作品:

using System.Web.Mvc;
...
var x = DependencyResolver.Current.GetService<myType>();

但是,以下内容不会:

//using System.Web.Mvc;
var x = System.Web.Mvc.DependencyResolver.Current.GetService<myType>();

错误是:

The non-generic method 'IDependencyResolver.GetService(Type)' cannot be used with type arguments.

在没有 using System.Web.Mvc 指令的情况下使用什么语法。

我想要使用System.Web.Http。这两个 namespace 中都存在一些属性(RouteRoutePrefix)。 System.Web.Http 在此特定代码文件中的使用率要高得多。

最佳答案

泛型方法版本GetService<T>()是在静态类中声明的扩展方法 DependencyResolverExtensionsSystem.Web.Mvc命名空间。

这与 IDependencyResolver.GetService() 不同它被声明为 DependencyResolver 的非泛型实例方法.

由于您没有导入该命名空间,编译器无法找到实现通用扩展方法的静态类GetService<T>(this IDependencyResolver ...) .

正如 Widi 评论的那样,在没有 using 的情况下使用它您需要这样调用它的声明:

var x = System.Web.Mvc.DependencyResolverExtensions.GetService<myType>(System.Web.Mvc.D‌​ependencyResolver.Current);

关于c# - Inferred 命名空间中的类有效,但在显式命名时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37630968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com