[英]How do you create a mock/substitute when you don't want to expose an instance of a class?
[英]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.