我在OOP相當新,似乎每天我都在努力學習它。我和我的團隊目前正在C#Winforms中開發一個相當大的桌面應用程序開發工具。頂級類Instantiation
我從我的國際同行收到該項目在3層應用程序的結構:
- 數據層
- 域
- GUI
到目前爲止好,事情是在域層我有以下類。
-User.cs -UserBase.cs
的User.cs的結構是這樣的:
/// <summary>
/// Top-level user class.
/// </summary>
public class User
{
public User()
{
userBase = new UserBase();
}
public IAdmUser userBase { get; set; }
public IEnumerable<IAdmGroup> AssGroups { get; set; }
}
而且UserBase.cs的結構是這樣的:
public class UserBase:ObjectBase, IAdmUser
{
/// <summary>
/// The date that the user has been registered. The datetime is in UTC format.
/// </summary>
public DateTime RegistrationDate { get; set; }
/// <summary>
/// 0 = User is not Active, 1 = User is Active.
/// </summary>
public bool IsActive { get; set; }
/// <summary>
/// The username.
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Description of the user.
/// </summary>
public string Description { get; set; }
/// <summary>
/// Firstname of the user.
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// Lastname of the user.
/// </summary>
public string LastName { get; set; }
}
每次我必須使用屬性來填充類型的新對象時,用戶必須按以下方式實例化它:
var newUser = new User
{
userBase =
{
FirstName = "name1",
LastName = "name2",
Description = "Junior Developer",
IsActive = true,
State = ObjectState.Added,
RegistrationDate = DateTime.Now,
UserName = "ASD"
}
};
OR
// without object initializer
var newUser = new User()
newUser.userBase.PropertyName = "Assign property value"
所以基本上,如果我只是做:var user = new User()
,我不會有機會到田間地頭FirstName, LastName
等我走下來像newUser.userBase.PropertyName
的水平。
我不明白這是什麼UserBase.cs,我有一個預感的唯一的事情是User.cs
只是UserBase.cs
的容器。
我在這裏請求幫助,因爲開發這個「框架」的同事有一些問題,他沒有工作。
謝謝你,對不起,如果這會變成一個重複的帖子,說實話,我甚至不知道該問什麼。
在我看來,好像筆者不明白在C#中繼承得很好,當第一次寫這個代碼,或有一個原因,不允許用戶從用戶基礎繼承...無論哪種方式,你必須等到你的同事回來工作或詢問你周圍的人 – Sayse
如果用戶「是」的用戶羣。使用'User:UserBase'。如果用戶「有」用戶羣,那麼您的實施應該沒問題。可能是你需要一個設計模式,爲你填充屬性。 –
在構造函數中擁有userBase = new UserBase()是一個相當大的問題。這只是無稽之談,它什麼都不構成。沒有出現在工作中的建築師應該很擔心你。 *有人*應該說「高停止!」在它陷入項目災難之前。我們不能爲你說,與團隊成員和主管交談。 –