2017-11-06 15 views
0

私は2クラスStaggingAttorneyAttorneyを持っています。弁護士に関する情報を収集するためにStaggingAttorneyを使用し、最良の結果を使用してAttorneyプロファイルを作成するために使用するすべての情報を取得したら、それを使用します。 2つのクラスはこのように見えます。c#派生クラスのみに基づいて基本クラスのプロパティを抽出し、新しい基本クラスオブジェクトを返します

private class StaggingAttorney : CourtCase.Attorney 
{ 
    public bool scraping = false; 

    public bool scraped = false; 

    public string caseNumber; 

    public CourtCase.Attorney toAttorney() 
    { 
     CourtCase.Attorney attorney = new CourtCase.Attorney(); 
     return attorney; 
    } 

} 

...と...

public class Attorney 
{ 
    public string names; 
    public string matchString; 
    ...  
    public List<Identity> IdentityMatches = new List<Identity>(); 

    public List<Identity> getIdentityMatches() 
    { 
     return IdentityMatches; 
    } 
    public class Identity 
    { 
     public string names; 
     public string barNumber; 
     public string email; 

     public string phoneNumber { get; internal set; } 
     public object faxNumber { get; internal set; } 
    } 
} 

私はあなたが上記を参照することができますCourtCase.Attorney toAttorney()というメソッドを作成しました。この方法では、私は@derloopkatが示唆したようにStaggingAttorney

+0

StaggingAttorneyの "toAttorney()"が呼び出されたときに、あなたのStaggingAttorneyの親クラスと同じプロパティ値を持つ新しい "Attorney"オブジェクトを返したいと思いますか? –

+2

あなたは既にそのクラスから継承しています。なぜ簡単なキャスティングをしないのですか? – derloopkat

+0

いくつかのアイデアについては、このディスカッションを参照してください。https://social.msdn.microsoft.com/Forums/en-US/8a096e04-a422-4c71-b628-2ccdfc54518d/casting-to-base-class?forum=csharplanguage – vbnet3d

答えて

0

内のすべてのCourtCase.Attorney継承されたプロパティを持つ新しいCourtCase.Attorneyを返すようにしたい、あなたは単にあなたの「StaggingAttorney」彼の親クラスへインスタンスをキャストすることができます。 (この場合は「弁護士」

しかし、あなたは本当に「弁護士」の新しいインスタンスはちょうどへのアクセスを親「StaggingAttorney」と同じ値を持つが必要な場合"StaggingAttorney"オブジェクトの親フィールド。

private class StaggingAttorney : CourtCase.Attorney 
{ 
    public bool scraping = false; 

    public bool scraped = false; 

    public string caseNumber; 

    public CourtCase.Attorney toAttorney() 
    { 
     CourtCase.Attorney attorney = new CourtCase.Attorney() 
     { 
      names = this.names, 
      matchString = this.matchString, 
      [... Initialize the other properties ...] 
     }; 
     return attorney; 
    } 

} 
0

子クラスのインスタンスを作成すると、親も作成されます。したがって、child.ToParent()メソッドから別の新しいインスタンスを作成する必要のあるシナリオはありません。あるクラスが他のクラスから継承していないときは、このような変換メソッドを持つほうが意味があります。

var attorney = new StaggingAttorney() { scraped = false }; 
attorney.names = "John"; //During the scraping process 
attorney.scraped = true; 
CourtCase.Attorney court = (CourtCase.Attorney)attorney; //casting 
Console.WriteLine(court.names); //returns "John" 

子供が親からnamesを継承したため、データをコピーする必要はありません。

関連する問題