[对不起这个笨拙的标题——我想不出最好的方式来表达我想做的事情。]
我觉得有点傻 - 我刚刚在我的以下代码中发现了一个错误:
private static XmlSchemaSet internalSchema = null;
private static XmlSchemaSet externalSchema = null;
private static XmlSchemaSet GetSchema(SchemaType schemaType)
{
// Lazy evaluation of schema objects - only create internal
// and external schema once
XmlSchemaSet schema =
schemaType == SchemaType.Internal ? internalSchema : externalSchema;
if (schema == null)
{
schema = new XmlSchemaSet();
schema.Add("", CreateXmlSchemaFile(schemaType));
}
return schema;
}
代码的目的是分配静态成员internalSchema
,并且externalSchema
仅在首次请求它们时分配一次。
当然,我尝试的简洁代码存在一个明显的错误 -schema
本地引用指向或正在指向(最初)的对象,但是一旦我调用,它只会重新分配本地引用,而不是静态成员。internalSchema
externalSchema
null
new
有没有一种简单的方法可以实现我想要做的事情?我想我可以创建另一个使用XmlSchemaSet
viaref
关键字的方法,但是为此创建另一个方法似乎很愚蠢。