【发布时间】:2015-05-21 02:45:26
【问题描述】:
我正在编写一个 MVC 5 互联网应用程序,我有一个关于使用 interface 和 Lazy<T> initialization 的问题。
这是有问题的类定义:
public class WebAPITokenService1_0 : IWebApiTokenService
这是我在声明中不使用接口的代码:
声明:
Lazy<WebAPITokenService1_0> webAPITokenService1_0;
初始化:
webAPITokenService1_0 = new Lazy<WebAPITokenService1_0>();
这是相同的代码,但使用了接口:
声明:
Lazy<IWebApiTokenService> webAPITokenService1_0;
初始化:
webAPITokenService1_0 = new Lazy<WebAPITokenService1_0>();
这是在声明中使用interface 时的错误:
> Cannot implicitly convert type
> 'System.Lazy<CanFindLocation.Services.AndroidWebAPI._1_0.WebAPITokenService1_0>'
> to
> 'System.Lazy<CanFindLocation.Interfaces.WebService.IWebApiTokenService>' E:\CanFindLocation\MVC\CanFindLocation\CanFindLocation\Controllers\AndroidWebAPI\1_0\WebService1_0Controller.cs
我查看了Lazy Initialization,但看不到有关上述情况的任何信息。
我可以将interface 与Lazy<T> initialization 一起使用吗?如果可以,我上面的代码有什么问题?
【问题讨论】:
-
Lazy<IWebApiTokenService> webAPITokenService1_0=new Lazy<IWebApiTokenService>(() => new WebAPITokenService1_0()); -
谢谢。如果您想发布答案,我会接受这是答案。
标签: c# interface initialization lazy-initialization