public override object ValueAs(Type returnType, IXmlNamespaceResolver nsResolver)
{
if (nsResolver == null)
{
nsResolver = this;
}
IXmlSchemaInfo schemaInfo = SchemaInfo;
XmlSchemaType schemaType;
XmlSchemaDatatype datatype;
if (schemaInfo != null)
{
if (schemaInfo.Validity == XmlSchemaValidity.Valid)
{
schemaType = schemaInfo.MemberType;
if (schemaType == null)
{
schemaType = schemaInfo.SchemaType;
}
if (schemaType != null)
{
return schemaType.ValueConverter.ChangeType(Value, returnType, nsResolver);
}
}
else
{
schemaType = schemaInfo.SchemaType;
if (schemaType != null)
{
datatype = schemaType.Datatype;
if (datatype != null)
{
return schemaType.ValueConverter.ChangeType(datatype.ParseValue(Value, NameTable, nsResolver), returnType, nsResolver);
}
}
}
}
return XmlUntypedConverter.Untyped.ChangeType(Value, returnType, nsResolver);
}