2009-05-07 2 views
1

У меня есть класс Person и на основе некоторой помощи, которую я получил в этом посте.Является ли это подходящим дизайном MonoState?

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

У меня есть класс CurrentPerson вокруг (??), то и я доступ к данным через это.

Я думаю, что я понимаю, как это должно работать, но кажется, что у меня его нет довольно справа.

Вопросы:

  1. Для начала, не должны Person и все это переменные-члены быть личное?

  2. Почему Person, если заявлено в CurrentPerson, статическое? Это правильно?

  3. Person на самом деле имеет дочерние объекты Address, Enrollment и CaseNote. Как их включить? A CurrentEnrollment обертка вокруг Enrollment?

Я довольно новый ООП как прикладной науки поэтому некоторые из этих понятий трудно для меня, чтобы визуализировать.

Код длинный, извиняюсь.


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. Если Дэниел Брюкнер, возможно, прочитает это, пожалуйста, не обижайтесь, потому что я не второй догадываюсь о вашем ответе; Я просто нуждаюсь в более глубоком разъяснении некоторых предметов, чтобы правильно понять использование моностата в моем приложении.

ответ

1

Относительно того, должны ли поля быть закрытыми, это просто новый (C# 3.0?) Способ объявления свойств без наличия резервной переменной. Распространенным вариантом является

public string SomeProperty { get; protected set } 

«курс, как только вы хотите сделать что-то вроде проверки в инкубаторе это не работает, и вы должны вернуться к написанию сеттеров и добытчиками, и объявить переменную подкладочный.

Я не уверен, что цель статического метода CurrentPerson.Person(), или как он устанавливается.

На третий вопрос, если я правильно Вас понял вы дать Person класс свойство типа Address и доступ к нему что-то вроде этого:

Console.WriteLine(somePerson.HomeAddress.City); 
Смежные вопросы