Not sure what's wrong here but I am trying to use an enum in an interface I've created.
When I attempt to implement the interface I get the error
Inconsistent accessibility: property type 'System.Collections.Generic.IList' is less accessible than property 'BusinessEntities.ICloneMessage.AgentAddresses'
Enum
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
}
}
}
Interface
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; }
}
}
Classes using 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; }
}
}
Best Answer
There are couple of errors in your code.
First. Your class
AgentAddress
is not marked aspublic
. That is why you are getting the error. Probably your class is not defined with any access specifier and it is considered asinternal
. Making your classpublic
would remove the error.Second problem in your code is that you are using
String?
. May be trying to make string asNullable<T>
. String is already a reference type, it can hold null. You need to remove?
withString?
. So your interface would look like:Nullable<T>
or type with?
is used for value types, since value types can't holdnull
likeint?
orNullable<int>