存储库中的嵌套类和业务逻辑?

Jus*_*tin 4 c# class-design

对于我的应用程序需要将一些数据存储在与所述属性(一个数组string main,string[] statusnt curParCount等).

我目前将它存储在这个类中:

class Repository
{
    public static Rep[] rep = new Rep[6];
    public struct Rep
    {
        public string main;
        public string clean;
        public int curParCount;
        public int totalCount;
        public int parStart;
        public int partialStart;
        public double scrollPos;
        public int selectionStart;
        public int selectionEnd;
        public string[] status;
    }    
    public static string repName()
    {
        string name;
        if (MainWindow.repnum == 0)
        { name = "Main Text"; }
        else { name = "Repository " + MainWindow.repnum; }
        return name;
    }
    public static string getStatus(int repNum, int statNum)
    {
        return rep[repNum].status[statNum];
    }                                                                  
 }
Run Code Online (Sandbox Code Playgroud)

这是我这样做的正确方法吗?肯定不会有这种感觉.

Ste*_*dit 6

基本的想法很好.实施可以改进.特别是,我担心你有一个可变结构; 要么使它不可变,要么把它变成一个类.我还建议使用自动支持字段将公共字段更改为公共属性(然后将名称置于上限).

编辑

这是我的版本:

class Repository
{
    public class Rep
    {
        public string Main {get; set;}
        public string Clean {get; set;}
        public int CurParCount {get; set;}
        public int TotalCount {get; set;}
        public int ParStart {get; set;}
        public int PartialStart {get; set;}
        public double ScrollPos {get; set;}
        public int SelectionStart {get; set;}
        public int SelectionEnd {get; set;}
        public string[] Statuses {get; set;}
    }                                       


    public const int StatusCount = 6;
    public static List<Rep> Reps = new List<Rep>();

    public static string Name
    {
        get
        { 
            if (MainWindow.repnum == 0)
              return "Main Text";

            return "Repository " + MainWindow.repnum;
        }
    }

    public static string GetStatus(int repIndex, int statIndex)
    { return Reps[repIndex].Status[statIndex]; }
}
Run Code Online (Sandbox Code Playgroud)

  • 有人可以发布一个链接,为什么一个可变结构是一个坏东西,特别是在非公共结构中(仅在内部使用)?如果您没有在属性后面制作"Fancy"代码,为什么要在实现细节中包含属性?这个C#的怪癖从未有意义.为什么属性存在很好,但为什么你做一个瘦包装在非公共接口中没有任何意义. (2认同)
  • @Kevin - 我在这里建议类/属性的主要原因是OP指定了WPF,你需要数据绑定的属性.但试试这个:http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx (2认同)