初始化class类型的类属性的替代方法
本文关键字:方法 属性 class 类型 初始化 | 更新日期: 2023-09-27 18:22:08
我有一个CibilResponse类,它具有类类型(TUEF类)的属性。
ICIBIL.cs
[ServiceContract]
public interface ICIBIL
{
[OperationContract]
string InsertCibil(CibilResponse cibilResponse);
[OperationContract]
string GenerateEnquiry(CibilEnquiry testObj);
}
[DataContract]
public class CibilResponse
{
[DataMember]
public string ResponseString { get; set; }
[DataMember]
public string Business { get; set; }
[DataMember]
public string MkrId { get; set; }
}
[DataContract]
public class CibilEnquiry
{
[DataMember]
public TUEF Tuef { get; set; }
}
[DataContract]
public class TUEF
{
[DataMember]
public string SegmentTag { get; set; }
[DataMember]
public string Version { get; set; }
[DataMember]
public string MemberReferenceNumber { get; set; }
}
应用程序:
CibilWcfService.CIBIL obj = new CibilWcfService.CIBIL();
CibilWcfService.CibilEnquiry CibilEnquiryEnq = new CibilWcfService.CibilEnquiry();
CibilWcfService.TUEF objtuef = new CibilWcfService.TUEF();
objtuef.Version = "123";
CibilEnquiryEnq.Tuef = objtuef;
string res = obj.GenerateEnquiry(CibilEnquiryEnq);
正如您所看到的,我必须创建不同类的单个对象(在本例中为TUEF
类的对象objtuef
),然后将其分配给CibilEnquiry
类的对象CibilEnquiryEnq
。
如果CibilResponse中有许多类型类的成员,这可能会非常乏味。初始化类成员的更好方法是什么?
我曾考虑在CibilResponse类中使用构造函数,并将值分配为CibilEnquiryEnq.Tuef.Version = "123";
,但它似乎不起作用——它给了我空引用错误。我仍然需要在我的应用程序中创建一个TUEF对象。
public CibilEnquiry()
{
this.Tuef = new TUEF();
}
- 更新:
应用程序:
CibilWcfService.CIBIL obj = new CibilWcfService.CIBIL();
CibilWcfService.CibilEnquiry CibilEnquiryEnq = new CibilWcfService.CibilEnquiry();
CibilEnquiryEnq.Tuef.Version = "1111";//null reference error
string res = obj.GenerateEnquiry(CibilEnquiryEnq);
WCF ICIBIL.cs
[ServiceContract]
public interface ICIBIL
{
[OperationContract]
string InsertCibil(CibilResponse cibilResponse);
[OperationContract]
string TestInsert(string testObj);
[OperationContract]
string GenerateEnquiry(CibilEnquiry testObj);
}
[DataContract]
public class CibilEnquiry
{
[DataMember]
public TUEF Tuef { get; set; }
public CibilEnquiry()
{
this.Tuef = new TUEF();
//this.Tuef = new TUEF() { SegmentTag = "", Version = ""};
}
}
[DataContract]
public class TUEF
{
[DataMember]
public string SegmentTag { get; set; }
[DataMember]
public string Version { get; set; }
[DataMember]
public string MemberReferenceNumber { get; set; }
}
在构造函数中初始化它们的最佳方法,您在这里已经建议过了。
创建一个参数构造函数,并将这些参数传递给您的实例:
public CibilEnquiry(string segmentTag, string version, string memberReferenceNumber)
{
this.Tuef = new TUEF()
{
SegmentTag = segmentTag,
Version = version,
MemberReferenceNumber = memberReferenceNumber
};
//initialize all of your class properties here
//simply it is the purpose of constructor to properly initialize the instance
}
如果您不想通过构造函数传递值,只需初始化其中的实例,然后分配值:
public class CibilEnquiry
{
public CibilEnquiry()
{
this.Tuef = new TUEF();
}
public TUEF Tuef { get; set; }
}
实例化类:
CibilEnquiry enquiry = new CibilEnquiry();
enquiry.Tuef.Version = "123";