Castle.Components.Binder.DataBinder.ConvertToArray C# (CSharp) Méthode

ConvertToArray() private méthode

private ConvertToArray ( Type desiredType, String key, Castle.Components.Binder.Node node, bool &conversionSucceeded ) : object
desiredType System.Type
key String
node Castle.Components.Binder.Node
conversionSucceeded bool
Résultat object
		private object ConvertToArray(Type desiredType, String key, Node node, out bool conversionSucceeded)
		{
			Type elemType = desiredType.GetElementType();

			if (node == null)
			{
				conversionSucceeded = false;
				return Array.CreateInstance(elemType, 0);
			}
			else if (node.NodeType == NodeType.Leaf)
			{
				LeafNode leafNode = node as LeafNode;

				return Converter.Convert(desiredType, leafNode.ValueType, leafNode.Value, out conversionSucceeded);
			}
			else if (node.NodeType == NodeType.Indexed)
			{
				IndexedNode indexedNode = node as IndexedNode;

				if (IsSimpleProperty(elemType))
				{
					return ConvertFlatNodesToArray(desiredType, indexedNode.ChildNodes, out conversionSucceeded);
				}
				else
				{
					return ConvertComplexNodesToArray(desiredType, indexedNode, out conversionSucceeded);
				}
			}
			else
			{
				throw new BindingException("Could not convert param to array as the node related " +
				                           "to the param is not a leaf node nor an indexed node. Key {0}", key);
			}
		}