/// <summary> /// Get serializer for tagged classes. /// </summary> /// <param name="assembly">Assembly to scan.</param> /// <param name="tagName">Tag.</param> /// <param name="mainType">Main type.</param> /// <returns>Serializer.</returns> public static XmlSerializer GetSerializer ( Assembly assembly, string tagName, Type mainType) { ArgumentUtility.NotNull ( assembly, "assembly"); ArgumentUtility.NotNullOrEmpty ( tagName, "tagName"); ArgumentUtility.NotNull ( mainType, "mainType"); _CreateSerializers(); lock ( _serializers ) { XmlSerializer ser = _serializers [tagName]; if (ser != null) { return(ser); } Type[] xtraTypes = TaggedClassesCollector.Collect ( assembly, tagName); ser = new XmlSerializer ( mainType, xtraTypes); _serializers.Add ( tagName, ser); return(ser); } }
/// <summary> /// Get serializer for tagged classes. Scan all assemblies. /// </summary> /// <param name="tagName">Tag.</param> /// <param name="mainType">Main type.</param> /// <returns>Serializer.</returns> public static XmlSerializer GetSerializer ( string tagName, Type mainType) { ArgumentUtility.NotNullOrEmpty ( tagName, "tagName"); ArgumentUtility.NotNull ( mainType, "mainType"); _CreateSerializers(); lock ( _serializers ) { if (_serializers.ContainsKey(tagName)) { return(_serializers [tagName]); } Type[] xtraTypes = TaggedClassesCollector.Collect(tagName); XmlSerializer ser = new XmlSerializer ( mainType, xtraTypes); _serializers.Add ( tagName, ser); return(ser); } }