初始化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; }
   }

初始化class类型的类属性的替代方法

在构造函数中初始化它们的最佳方法,您在这里已经建议过了。

创建一个参数构造函数,并将这些参数传递给您的实例:

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";