Reputation: 523
A WCF newbie asking for help. What I’m doing wrong here: ICardService
[ServiceContract(Namespace = "http://xxxx.xxxxxx.xxxx/xx/xxxxxx")]
interface ICardService
{
[OperationContract]
Coupon CreateCouponCard(string cardDefinitionCode);
}
public class CardService : ICardService
{
public Coupon CreateCouponCard(string cardDefinitionCode)
{
Coupon composite = new Coupon();
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.PassTypeIdentifier="sdfsdf";
composite.Icon.DisplayGroup = "czxczxczx";
}
return composite;
}
}
[DataContract(Namespace = "")]
public class Coupon : CardCommonDefinition
{
[DataMember]
public string Description {get; set;}
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
}
[DataContract(Namespace = "")]
public class CardCommonDefinition
{
[DataMember]
public string PassTypeIdentifier {get; set;}
[DataMember]
public CardFieldDefinitionEntity Icon {get; set;}
}
[DataContract(Namespace = "")]
public class CardFieldDefinitionEntity
{
[DataMember]
public string DisplayGroup {get; set;}
}
When I run this it is failing at the composite.Icon.DisplayGroup = "czxczxczx"; with an object not set to an instance of an object.
I don’t have any clue who to resolved it, can you please help me?
Upvotes: 0
Views: 398
Reputation: 6891
You can solve this by two way.
One- Initialize Icon
property before using it.
public Coupon CreateCouponCard(string cardDefinitionCode)
{
Coupon composite = new Coupon();
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.PassTypeIdentifier="sdfsdf";
composite.Icon = new CardFieldDefinitionEntity();
composite.Icon.DisplayGroup = "czxczxczx";
}
return composite;
}
Two - Have a constructor of CardCommonDefinition
and initialize Icon
property in it so that you don't need to worry about it being null.
[DataContract(Namespace = "")]
public class CardCommonDefinition
{
public CardCommonDefinition()
{
this.Icon = new CardFieldDefinitionEntity();
}
[DataMember]
public string PassTypeIdentifier {get; set;}
[DataMember]
public CardFieldDefinitionEntity Icon {get; set;}
}
[DataContract(Namespace = "")]
public class Coupon : CardCommonDefinition
{
public Coupon : base()
{ }
[DataMember]
public string Description {get; set;}
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
}
Upvotes: 2