//---------------------------------------------------------------------------------- /// <summary> /// Retourne le type de form qui sait éditer le type demandé /// </summary> /// <param name="tp"></param> /// <returns></returns> public static CReferenceTypeForm GetRefFormToEdit(Type typeAEditer) { // Cherche dans le dictionnaire des Forms préférés CReferenceTypeForm refTypeForm = null; if (CDictionnaireTypeEditeTypeFormPrefere.GetInstance().TryGetValue(typeAEditer, out refTypeForm)) { if (refTypeForm != null) { return(refTypeForm); } } // Si pas de préféré, on prend le Form "système" (comme avant) foreach (System.Reflection.Assembly ass in AppDomain.CurrentDomain.GetAssemblies()) { foreach (Type tp in ass.GetExportedTypes()) { object[] attribs = tp.GetCustomAttributes(typeof(ObjectEditeur), true); if (attribs != null && attribs.Length == 1) { ObjectEditeur objEdit = (ObjectEditeur)attribs[0]; if (objEdit.TypeEdite == typeAEditer) { CReferenceTypeFormBuiltIn tpFormSys = new CReferenceTypeFormBuiltIn(); tpFormSys.TypeForm = tp; return(tpFormSys); } } } } return(null); }
//-------------------------------------------------------------------------------------- public static CDictionnaireTypeEditeTypeFormPrefere GetInstance() { if (m_dictionnaire == null) { // Lit le registre CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(CSc2iWin32DataClient.ContexteCourant.IdSession); if (registre != null) { byte[] data = registre.GetValeurBlob(c_cleRegistre); if (data != null) { MemoryStream flux = new MemoryStream(data); BinaryReader lecteur = new BinaryReader(flux); CSerializerReadBinaire serializer = new CSerializerReadBinaire(lecteur); CResultAErreur result = serializer.TraiteObject <CDictionnaireTypeEditeTypeFormPrefere>(ref m_dictionnaire); lecteur.Close(); flux.Close(); if (result) { return(m_dictionnaire); } } } m_dictionnaire = new CDictionnaireTypeEditeTypeFormPrefere(); } return(m_dictionnaire); }
public static void ResetInstance() { m_dictionnaire = null; }