繁体   English   中英

困惑如何设置我的班级,不想公开用逗号分隔的列表,而只公开一个集合

[英]Confused how to setup my class, do't want to expose a comma seperated list, only a collection

所以我的数据库有一列,是用逗号分隔的类别ID列表,例如:

“ 1,234,234,23,343,53”

我的课程将具有一个List属性,该属性将以集合形式公开这些ID。

如果有人要添加CategoryID,他们可以这样做:

myList.Add(234);

但是,当需要保存到数据库时,我将不得不将集合转换回逗号分隔的列表。

做这个的最好方式是什么? 我应该将逗号分隔的整数列表设为私有吗?

我将只允许通过一种方法进行访问。 它更干净,可以防止错误。 是的,将整数列表设为私有。

实际上,没有整数列表。 拥有一个整数集合,并且仅当您写回数据库时才将它们转换为字符串。 如果必须,请重写collections .toString()方法以将整数列表提供为以逗号分隔的列表。 那是您可以轻松获得列表,但人们无法接受。

这样的事情应该可以满足您的需求:

public class SomeClass
{
    public List<int> CategoryIDList { get; private set; }

    public void UpdateToDatabase()
    {
        string categoryIdList = ConvertIntListToString(this.CategoryIDList);
        // TODO Update Database.
    }

    private static string ConvertIntListToString(List<int> intList)
    {
        return string.Join(",", intList.Cast<string>().ToArray());
    }
}

这确实取决于课程的目的。

如果该类仅设计为保留ID,则您可能需要查看从List继承并添加用于从数据库读取并保存到数据库的方法。

如果该类不仅包含ID信息,还包含更多信息,那么私有列表是您的最佳选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM