我有以下类,假设通过字符串数组来创建迭代来检查代码是否存在。但是,使用延迟初始化时,.value总是返回null。延迟初始化总是返回空
public class LazyInclusionList
{
private string docCopyCode;
private Lazy<LazyInclusionList> _docCopyCodeList = null;
public LazyInclusionList()
{ }
public bool GetDocCodes(string docCopyNumber)
{
docCopyCode = new string(docCopyNumber.Where(Char.IsLetter).ToArray());
_docCopyCodeList = new Lazy<LazyInclusionList>();
bool docCopyCheck = false;
int last = _docCopyCodeList.Value.GetDocCodesDB.Count();
int i = 0;
foreach (string code in _docCopyCodeList.Value.GetDocCodesDB)
{
if(docCopyCode == code)
{
docCopyCheck = true;
}
else if (docCopyCode != code && ++i == last)
{
docCopyCheck = false;
}
}
return docCopyCheck;
}
private string[] codes;
public string[] GetDocCodesDB
{
set
{
codes = value;
}
get { return codes; }
}
}
我有,我用它来检查这个代码下面的测试方法。
[TestMethod]
public void CheckURLList()
{
var list = new LazyInclusionList();
string[] array = new string [3] { "CB", "DB", "T" };
list.GetDocCodesDB = array;
string myTest = "CB10/00/1";
Assert.IsTrue(list.GetDocCodes(myTest));
}
这是我第一次使用这种方法,并没有完全理解它。
我没有看到构造函数或字段/属性初始值设定项正在执行任何操作,那么您如何期望执行'GetDocCodes()'方法(不是说您的测试,而是关于将使用该类型的东西)?您误解了['Lasy <>'](https://msdn.microsoft.com/en-us/library/dd997286(v = vs.110).aspx)模式。也许如果你用文字解释你想达到什么目标,那么答案会更容易。 – Sinatr
字符串数组将存储在数据库中,并且不想在每次需要时执行该行程(如果完全相同)(GetDocCodesDB)。我希望GetDocCodes能够完成这项工作(返回true/false),并且使用惰性模式来管理对GetDocCodesDB的调用。我希望明确.. –