2009-05-07 3 views
1

나는 Person 클래스를 가지고 있으며이 게시물에서받은 도움을 기반으로합니다. 이것이 적절한 MonoState Design입니까?

MonoState, Singleton, or Derived Forms: Best approach for CRUD app?

난 (??) 그 I 및 그 통해 데이터를 액세스 주위 CurrentPerson 클래스를 갖는다.

나는 이것이 어떻게 작동하는지 이해한다고 생각하지만, 나는 그것을 가지고 있지 않은 것으로 보인다. 이다.

질문 : 우선 들어

  1. Person 안 모든 멤버 변수가 개인 일이있어?

  2. Person 인 경우 CurrentPerson으로 선언하면 정적입니까? 그게 맞습니까?

  3. Person에는 실제로 하위 개체 Address, EnrollmentCaseNote이 있습니다. 어떻게 그들을 통합합니까? 래퍼 주위 Enrollment? 응용 과학으로

은 그래서 이러한 개념 중 일부는 저를 시각화하기가 어려운 OOP 상당히 새로운입니다.

코드가 길어서 사과드립니다.


class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string MiddleName { get; set; } 
    public string SuffixID { get; set; } 
    public string TitleID { get; set; } 
    public string SocialSn { get; set; } 
    public string Gender { get; set; } 
    public string DlNumber { get; set; } 
    public string DlStateID { get; set; } 
    public string PrimaryRace { get; set; } 
    public string SecondaryRace { get; set; } 
    public string EmailAddress { get; set; } 
    public string MaritalStatus { get; set; } 
    public string InsertProgram { get; set; } 
    public string InsertUserID { get; set; } 
    public string UpdateProgram { get; set; } 
    public string UpdateUserID { get; set; } 
    public string LockID { get; set; } 

    public int PersonID { get; set; } 
    public int ClientID { get; set; } 
    public int ResidencyCountyID { get; set; } 
    public int ResponsibilityCountyID { get; set; } 

    public bool HispanicOriginFlag { get; set; } 
    public bool CitizenFlag { get; set; } 
    public bool VeteranFlag { get; set; } 

    public DateTime BirthDate { get; set; } 
    public DateTime DeathDate { get; set; } 
    public DateTime InsertDateTime { get; set; } 
    public DateTime UpdateDateTime { get; set; } 



} 

class CurrentPerson 
{ 
    public static Person Person { get; set; } 

    public string FirstName 
    { 
     get { return CurrentPerson.Person.FirstName; } 
     set { CurrentPerson.Person.FirstName = value; } 
    } 

    public string LastName 
    { 
     get { return CurrentPerson.Person.LastName; } 
     set { CurrentPerson.Person.LastName = value; } 
    } 

    public string MiddleName 
    { 
     get { return CurrentPerson.Person.MiddleName; } 
     set { CurrentPerson.Person.MiddleName = value; } 
    } 

    public string SuffixID 
    { 
     get { return CurrentPerson.Person.SuffixID; } 
     set { CurrentPerson.Person.SuffixID = value; } 
    } 

    public string TitleID 
    { 
     get { return CurrentPerson.Person.TitleID; } 
     set { CurrentPerson.Person.TitleID = value; } 
    } 

    public string SocialSn 
    { 
     get { return CurrentPerson.Person.SocialSn; } 
     set { CurrentPerson.Person.SocialSn = value; } 
    } 

    public string Gender 
    { 
     get { return CurrentPerson.Person.Gender; } 
     set { CurrentPerson.Person.Gender = value; } 
    } 

    public string DlNumber 
    { 
     get { return CurrentPerson.Person.DlNumber; } 
     set { CurrentPerson.Person.DlNumber = value; } 
    } 

    public string DlStateID 
    { 
     get { return CurrentPerson.Person.DlStateID; } 
     set { CurrentPerson.Person.DlStateID = value; } 
    } 

    public string PrimaryRace 
    { 
     get { return CurrentPerson.Person.PrimaryRace; } 
     set { CurrentPerson.Person.PrimaryRace = value; } 
    } 

    public string SecondaryRace 
    { 
     get { return CurrentPerson.Person.SecondaryRace; } 
     set { CurrentPerson.Person.SecondaryRace = value; } 
    } 

    public string EmailAddress 
    { 
     get { return CurrentPerson.Person.EmailAddress; } 
     set { CurrentPerson.Person.EmailAddress = value; } 
    } 

    public string MaritalStatus 
    { 
     get { return CurrentPerson.Person.MaritalStatus; } 
     set { CurrentPerson.Person.MaritalStatus = value; } 
    } 

    public string InsertProgram 
    { 
     get { return CurrentPerson.Person.InsertProgram; } 
     set { CurrentPerson.Person.InsertProgram = value; } 
    } 

    public string InsertUserID 
    { 
     get { return CurrentPerson.Person.InsertUserID; } 
     set { CurrentPerson.Person.InsertUserID = value; } 
    } 

    public string UpdateProgram 
    { 
     get { return CurrentPerson.Person.UpdateProgram; } 
     set { CurrentPerson.Person.UpdateProgram = value; } 
    } 

    public string UpdateUserID 
    { 
     get { return CurrentPerson.Person.UpdateUserID; } 
     set { CurrentPerson.Person.UpdateUserID = value; } 
    } 

    public string LockID 
    { 
     get { return CurrentPerson.Person.LockID; } 
     set { CurrentPerson.Person.LockID = value; } 
    } 

    public int PersonID 
    { 
     get { return CurrentPerson.Person.PersonID; } 
     set { CurrentPerson.Person.PersonID = value; } 
    } 

    public int ClientID 
    { 
     get { return CurrentPerson.Person.ClientID; } 
     set { CurrentPerson.Person.ClientID = value; } 
    } 

    public int ResidencyCountyID 
    { 
     get { return CurrentPerson.Person.ClientID; } 
     set { CurrentPerson.Person.ClientID = value; } 
    } 

    public int ResponsibilityCountyID 
    { 
     get { return CurrentPerson.Person.ResponsibilityCountyID; } 
     set { CurrentPerson.Person.ResponsibilityCountyID = value; } 
    } 

    public bool HispanicOriginFlag 
    { 
     get { return CurrentPerson.Person.HispanicOriginFlag; } 
     set { CurrentPerson.Person.HispanicOriginFlag = value; } 
    } 

    public bool CitizenFlag 
    { 
     get { return CurrentPerson.Person.CitizenFlag; } 
     set { CurrentPerson.Person.CitizenFlag = value; } 
    } 

    public bool VeteranFlag 
    { 
     get { return CurrentPerson.Person.VeteranFlag; } 
     set { CurrentPerson.Person.VeteranFlag = value; } 
    } 

    public DateTime BirthDate 
    { 
     get { return CurrentPerson.Person.BirthDate; } 
     set { CurrentPerson.Person.BirthDate = value; } 
    } 

    public DateTime DeathDate 
    { 
     get { return CurrentPerson.Person.DeathDate; } 
     set { CurrentPerson.Person.DeathDate = value; } 
    } 

    public DateTime InsertDateTime 
    { 
     get { return CurrentPerson.Person.InsertDateTime; } 
     set { CurrentPerson.Person.InsertDateTime = value; } 
    } 

    public DateTime UpdateDateTime 
    { 
     get { return CurrentPerson.Person.UpdateDateTime; } 
     set { CurrentPerson.Person.UpdateDateTime = value; } 
    } 


} 

P.S. Daniel Brückner가이 글을 읽는다면, 나는 당신의 대답을 추측하지 않고 있기 때문에 아무런 불쾌감을 느끼지 마십시오. 내 응용 프로그램에서 모노 스테이트의 사용을 제대로 이해하기 위해서는 일부 항목에 대해보다 심층적 인 설명이 필요합니다.

답변

1

필드가 비공개이어야하는지에 대해서, 그것은 새로운 (C# 3.0?) 배킹 변수가없는 프로퍼티를 선언하는 방법 일뿐입니다. 일반적인 변화는 바로이 작동하지 않는 세터에서 검증 그런 짓을하려는 당신이 세터와 게터를 작성하고, 백업 변수를 선언으로 돌아 가야로, 코스

public string SomeProperty { get; protected set } 

'입니다.

정적 인 CurrentPerson.Person() 방법의 의도 또는 설정 방법을 잘 모르겠습니다.

세 번째 질문에 대한

, 내가 당신을 이해한다면 바로 당신이 Person 클래스를 타입 Address의 속성을 부여하고이 같은 접근 것 :

Console.WriteLine(somePerson.HomeAddress.City);