C# 用于存储用户的类的命名约定和结构

C# 用于存储用户的类的命名约定和结构,c#,class-design,structure,C#,Class Design,Structure,我想用Add()、Delete()等函数创建一个类,将用户存储在数据库中 那么,什么是更好的命名约定和结构呢 同一个类中的两个: **EXAMPLE** User.Add("Username", "Password"); User user = User.GetUser(); class User { public User(string username, string password) { Username = username; Pass

我想用Add()、Delete()等函数创建一个类,将用户存储在数据库中

那么,什么是更好的命名约定和结构呢

同一个类中的两个:

**EXAMPLE**
User.Add("Username", "Password");
User user = User.GetUser();

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }

    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}
或分为两类,并使用*Manager后缀…

**EXAMPLE**
UserManager.Add("", "");
User user = UserManager.GetUser();

class UserManager
{
    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }
}
或者这两个示例都不好,而您有一个更好的吗?

其中名为“manager”的类通常指向一些不知名的设计

我会选择经典和经典

这基本上是:

  • 获取与CRUD操作的接口
  • 在需要的地方注入具体实现的实例,而不是自己使用具体实现

我更喜欢第二种方法,对于没有逻辑和管理器类的简单实体,事实上MS Entity Framework也差不多,实体只有属性,生成的DBContext允许您查询、添加和编辑实体

注意:不要使UserManager的方法成为静态的,类应该是一个带有实例方法的普通类,这样您就可以轻松地进行测试,并在需要时进行注入


第二点注意:您不打算以明文形式检索用户密码,也不打算将其以明文形式存储在数据库中,对吗D

请注意第二条。。。我们都这样做了:)但是警告是+1;)