Exemplo n.º 1
0
 public static bool TryGetTranslator(Type t, out IXmlTranslation <object> transl)
 {
     if (!typeDict.TryGetValue(t, out NotifyingItem <GetResponse <IXmlTranslation <object> > > not))
     {
         transl = null;
         return(false);
     }
     if (not.Value.Failed)
     {
         transl = null;
         return(false);
     }
     transl = not.Value.Value;
     return(transl != null);
 }
Exemplo n.º 2
0
        private static void SetTranslator(IXmlTranslation <Object> transl, Type t)
        {
            var resp = typeDict.TryCreateValue(
                t,
                () =>
            {
                return(new NotifyingItem <GetResponse <IXmlTranslation <Object> > >());
            }).Value = GetResponse <IXmlTranslation <object> > .Succeed(transl);

            if (string.IsNullOrEmpty(transl.ElementName))
            {
                return;
            }
            elementNameTypeDict.TryCreateValue(transl.ElementName, () => new NotifyingItem <Type>()).Value = t;
        }
Exemplo n.º 3
0
 static XmlTranslator()
 {
     foreach (var kv in TypeExt.GetInheritingFromGenericInterface(typeof(IXmlTranslation <>)))
     {
         Type transItemType = kv.Key.GetGenericArguments()[0];
         try
         {
             object xmlTransl                = Activator.CreateInstance(kv.Value);
             var    xmlConverterGenType      = typeof(XmlTranslationCaster <>).MakeGenericType(transItemType);
             IXmlTranslation <Object> transl = Activator.CreateInstance(xmlConverterGenType, args: new object[] { xmlTransl }) as IXmlTranslation <Object>;
             SetTranslator(transl, transItemType);
         }
         catch (Exception ex)
         {
             var resp = typeDict.TryCreateValue(
                 transItemType,
                 () =>
             {
                 return(new NotifyingItem <GetResponse <IXmlTranslation <Object> > >());
             }).Value = GetResponse <IXmlTranslation <object> > .Fail(ex);
         }
     }
 }
Exemplo n.º 4
0
 public XmlTranslationCaster(IXmlTranslation <T> src)
 {
     Source = src;
 }
Exemplo n.º 5
0
 internal static void SetTranslator <T>(IXmlTranslation <T> transl)
 {
     SetTranslator(transl as IXmlTranslation <Object>, typeof(T));
 }
Exemplo n.º 6
0
    protected override GetResponse <IXmlTranslation <object> > SetTranslator_Internal(IXmlTranslation <object> transl, Type t)
    {
        var resp = base.SetTranslator_Internal(transl, t);

        if (string.IsNullOrEmpty(transl.ElementName))
        {
            return(resp);
        }
        elementNameTypeDict.GetOrAdd(transl.ElementName, () => t);
        return(resp);
    }