2014-03-26 112 views
0

不确定这里有什么问题,但我想在我创建的接口中使用枚举。不一致的可访问性:类中的属性类型比接口中的属性类型不易访问

当我试图实现我的错误

可访问性不一致的接口:属性类型“System.Collections.Generic.IList”比财产较少访问“BusinessEntities.ICloneMessage.AgentAddresses”

枚举

namespace BusinessEntities 
{ 
    public class AddressTypeValues 
    { 
     [DataContract(Name = "AddressType")] 
     public enum AddressType 
     { 
      [EnumMember(Value = "Home")] 
      Home, 
      [EnumMember(Value = "Mailing")] 
      Mailing, 
      [EnumMember(Value = "Location")] 
      Location, 
      [EnumMember(Value = "Other")] 
      Other 
     } 
    } 
} 

接口

namespace BusinessEntities 
{ 
    public interface IAgentAddress 
    { 
     AddressTypeValues.AddressType AddressType { get; set; } 
     String? Street1 { get; set; } 
     String? Street2 { get; set; } 
     String? Street3 { get; set; } 
     String? City { get; set; } 
     String? State { get; set; } 
     String? ZipCode { get; set; } 
    } 
} 

类使用AddresType

namespace BusinessEntities 
{ 
    [DataContract] 
    public class CloneMessage : ICloneMessage 
    { 
     [DataMember] 
     public AgentTransmission AgentInformation { get; set; } 
     [DataMember] 
     public IList<AgentAddress> AgentAddresses { get; set; } 
     [DataMember] 
     public IList<RelationshipCode> RelationshipCodes { get; set; } 
     [DataMember] 
     public string? ErrorMessages { get; set; } 
     public CloneMessage(){} 
    } 
} 
namespace BusinessEntities 
{ 
    [DataContract] 
    public class AgentAddress : IAgentAddress 
    { 
     [DataMember] 
     public AddressTypeValues.AddressType AddressType { get; set; } 
     [DataMember] 
     public string Street1 { get; set; } 
     [DataMember] 
     public string Street2 { get; set; } 
     [DataMember] 
     public string Street3 { get; set; } 
     [DataMember] 
     public string City { get; set; } 
     [DataMember] 
     public string State { get; set; } 
     [DataMember] 
     public string ZipCode { get; set; } 
    } 
} 
+5

您的类'AgentAddress'可能是'internal' ,使其成为公共类 – Habib

+0

如果我这样做,我被告知我不能在'IAgentAddress'接口中具有可空的'string'属性。 – NealR

+2

'String'已经是一个可以为空的类。你不能有一个'Nullable '。删除问号。 – Amy

回答

4

有在你的代码夫妇的错误。

首先。您的班级AgentAddress未标记为public。这就是你遇到错误的原因。可能你的班级没有用任何访问说明符来定义,它被认为是internal。让您的课程public将删除该错误。

代码中的第二个问题是您使用的是String?。可能会试图使字符串为Nullable<T>字符串已经是引用类型,它可以为null。您需要删除?String?。所以,你的界面看起来像:

public interface IAgentAddress 
{ 
    AddressTypeValues.AddressType AddressType { get; set; } 
    String Street1 { get; set; } 
    String Street2 { get; set; } 
    String Street3 { get; set; } 
    String City { get; set; } 
    String State { get; set; } 
    String ZipCode { get; set; } 
} 

Nullable<T>?类型用于值类型,因为值类型不能容纳nullint?Nullable<int>

相关问题