C# WCF中的复合类型错误
一个WCF新手请求帮助。我做错了什么: ICardServiceC# WCF中的复合类型错误,c#,wcf,C#,Wcf,一个WCF新手请求帮助。我做错了什么: ICardService [ServiceContract(Namespace = "http://xxxx.xxxxxx.xxxx/xx/xxxxxx")] interface ICardService { [OperationContract] Coupon CreateCouponCard(string cardDefinitionCode); } 当我运行此命令时,它在composite.Icon.DisplayGr
[ServiceContract(Namespace = "http://xxxx.xxxxxx.xxxx/xx/xxxxxx")]
interface ICardService
{
[OperationContract]
Coupon CreateCouponCard(string cardDefinitionCode);
}
当我运行此命令时,它在composite.Icon.DisplayGroup=“czxczx”处失败;对象未设置为对象的实例
我不知道是谁解决的,你能帮我吗?你可以用两种方法解决这个问题 一-在使用前初始化
图标
属性
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;
}
第二个-有一个cardcomondefinition
的构造函数,并在其中初始化Icon
属性,这样您就不必担心它为空
[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; }
}
}
你可以用两种方法来解决这个问题 一-在使用前初始化
图标
属性
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;
}
第二个-有一个cardcomondefinition
的构造函数,并在其中初始化Icon
属性,这样您就不必担心它为空
[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; }
}
}
在设置
DisplayGroup
属性之前,您需要确保优惠券对象的图标属性已初始化。在设置DisplayGroup
属性之前,您需要确保优惠券对象的图标属性已初始化。这种方法真的是设计服务的最佳方法吗?基本上,我从DB a CardDefinitionEntity接收创建任何类型卡所需的所有字段。我想做的是为每种类型的卡(优惠券、活动、会员、商店等)创建一个类,其中包含特定于这些卡的字段,并创建一个基类,其中包含所有卡类型的公共字段。但我不确定我使用的方法是否正确,因为在使用属性之前实例化属性似乎有点尴尬。我对C#还不熟悉,所以也许这就是为什么我觉得C#是一个很好的例子。不管你如何实例化它,但你必须先实例化,然后才能使用对象。否则您肯定会得到NullReferenceException。该方法是根据您在问题中提供的详细信息提出的。没有提到数据库或其他类。如果你想得到最合适的解决方案,你需要提供相关信息。这种方法真的是设计服务的最佳方法吗?基本上,我从DB a CardDefinitionEntity接收创建任何类型卡所需的所有字段。我想做的是为每种类型的卡(优惠券、活动、会员、商店等)创建一个类,其中包含特定于这些卡的字段,并创建一个基类,其中包含所有卡类型的公共字段。但我不确定我使用的方法是否正确,因为在使用属性之前实例化属性似乎有点尴尬。我对C#还不熟悉,所以也许这就是为什么我觉得C#是一个很好的例子。不管你如何实例化它,但你必须先实例化,然后才能使用对象。否则您肯定会得到NullReferenceException。该方法是根据您在问题中提供的详细信息提出的。没有提到数据库或其他类。如果要获得最佳拟合解决方案,您需要提供相关信息。
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;
}
[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; }
}
}