public object marshallByInType(object input, Type inType) { if (input == null) { return(null); } if (writerByInType.ContainsKey(inType)) { IEzyWriter writer = writerByInType[inType]; return(writer.write(input, this)); } if (typeof(IDictionary).IsAssignableFrom(inType)) { EzyObject answer = EzyEntityFactory.newObject(); IDictionary dict = (IDictionary)(input); Type keyType = inType.GetGenericArguments()[0]; Type valueType = inType.GetGenericArguments()[1]; foreach (DictionaryEntry entry in dict) { answer.put( marshallByInType(entry.Key, keyType), marshallByInType(entry.Value, valueType)); } return(answer); } else if (typeof(IList).IsAssignableFrom(inType)) { EzyArray answer = EzyEntityFactory.newArray(); IList list = (IList)(input); Type valueType = inType.GetGenericArguments()[0]; foreach (Object value in list) { answer.add(marshallByInType(value, valueType)); } return(answer); } return(input); }
public EzyBindingBuilder addWriter(IEzyWriter writer) { this.writerByInType[writer.getInType()] = writer; return(this); }