【问题标题】:can't inherit interface after migrating project from VS2010 to VS2012将项目从VS2010迁移到VS2012后无法继承接口
【发布时间】:2014-02-27 17:28:44
【问题描述】:

我正在尝试将项目从 VS2010 迁移到 VS2012,除了一些小问题之外,我遇到的最大问题是有一个不会继承接口的 public class

界面:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

using COMPANY.PROJECT.HL7.ExceptionManagement;
using COMPANY.PROJECT.HL7.Common;

namespace COMPANY.PROJECT.HL7.WebService
{
    [ServiceContract(Namespace = "http://class.ified/Services")]
    [XmlSerializerFormat]

    public interface IAssessmentService
    {

这是试图继承接口的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Xml.Serialization;
using COMPANY.PROJECT.HL7.ExceptionManagement;
using COMPANY.PROJECT.HL7.Common;
using COMPANY.Common.Logging;
using System.Web.Services.Protocols;
using System.Text;
using System.Xml;

using System.ServiceModel;
using System.ServiceModel.Web;

using COMPANY.PROJECT.BDO;
using COMPANY.PROJECT.Common;
using COMPANY.PROJECT.BDO.Security;
using COMPANY.PROJECT.HL7.SurveyAdminServiceReference;
using COMPANY.PROJECT.HL7.PatientServiceReference;
using COMPANY.PROJECT.Common.Web.Extensions;
using COMPANY.PROJECT.BDO.ServiceResponse;
using COMPANY.PROJECT.BDO.Enrollment;

using System.Configuration;
using System.ServiceModel.Channels;

namespace COMPANY.PROJECT.HL7.WebService
{
    public class AssessmentService : IAssessmentService
    {

在 VS2010 中,项目编译没有错误,AssessmentServiceIAssessmentService 都出现在浅蓝色文本中,但在 VS2012 中,AssessmentService 是浅蓝色,IAssessmentService 是纯黑色文本,这对我来说是这样的即使它在同一个命名空间中,它也找不到接口。虽然这不会导致这两个特定文件的任何构建错误,但它会导致单元测试的代码模块出现错误:

Error 9 The type or namespace name 'AssessmentService' does not exist in the namespace 'COMPANY.PROJECT.HL7.WebService' (are you missing an assembly reference?)'

当我查看发生构建错误的代码模块时,它是using COMPANY.PROJECT.HL7.WebService;,以防万一有人问这个问题。

如果有人能告诉我为什么接口可以在 VS2010 中继承,但在 2012 年不能继承,那就太好了。同样,我已经检查了 2010 年和 2012 年之间的属性是否存在差异,并确保它们完全相同。

谢谢,

尼克

【问题讨论】:

  • COMPANY.PROJECT.HL7.WebService 是否正确构建?如果没有,其他项目将无法使用它,您将看到您遇到的错误。
  • 如果我在单元测试中注释掉发生构建错误的代码行,该项目将成功构建,但是,IAssessmentService 仍然是黑色文本。

标签: c# visual-studio-2010 visual-studio-2012 inheritance interface


【解决方案1】:

首先构建包含接口的程序集。假设它构建正常,请确保在您使用它的项目中有对该程序集的引用。

您还可以从解决方案属性对话框的项目依赖项选项卡中检查项目的构建顺序。

【讨论】:

  • 吐出错误的单元测试确实包含对COMPANY.PROJECT.HL7.WebService的引用。如我所说。这是因为 IAssessementService 接口没有被继承,即使它位于尝试使用它的类的同一个命名空间中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多