初始化类属性的类属性的替代方法?

时间:2015-11-17 06:13:09

标签: c# asp.net .net class oop

我有一个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);

正如您所看到的,我必须创建各种类的单个对象(在本例中为类objtuef的对象TUEF),然后将其分配给{{1}的对象CibilEnquiryEnq }。class。

如果CibilResponse中有许多类型的成员,那将非常繁琐。初始化类成员的更好方法是什么?

我正在考虑在CibilResponse类中使用构造函数并将值指定为CibilEnquiry,但它似乎没有工作,它给了我null引用错误。我仍然需要在我的应用程序中创建一个TUEF对象。

CibilEnquiryEnq.Tuef.Version = "123";
  • 更新:

应用

public CibilEnquiry()
{
    this.Tuef = new TUEF();
}

WCF ICIBIL.cs

CibilWcfService.CIBIL obj = new CibilWcfService.CIBIL();
                CibilWcfService.CibilEnquiry CibilEnquiryEnq = new CibilWcfService.CibilEnquiry();
            CibilEnquiryEnq.Tuef.Version = "1111";//null reference error

            string res = obj.GenerateEnquiry(CibilEnquiryEnq);

1 个答案:

答案 0 :(得分:2)

在构造函数中初始化它们的最佳方法,这是你在这里建议的。

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

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