1

Snippet .NET C#: Serialiser-Déserialiser dans un fichier

Voici un petit extrait de code C# qui vous permettra de stocker un objet dans un fichier.
Ou à l’inverse, extraire un objet depuis un fichier.


string fileName = "c:\objectInFile.txt";
if (File.Exists(fileName)) {
DeSerializeObject(fileName)
}
else {
//REQUETE
SerializeObject(RecordList, fileName)
}
///

/// Serializes an object.
///

///
/// /// public void SerializeObject(T serializableObject, string fileName)
{
if (serializableObject == null) { return; }
try
{
XmlDocument xmlDocument = new XmlDocument();
XmlSerializer serializer = new XmlSerializer(serializableObject.GetType());
using (MemoryStream stream = new MemoryStream())
{
serializer.Serialize(stream, serializableObject);
stream.Position = 0;
xmlDocument.Load(stream);
xmlDocument.Save(fileName);
stream.Close();
}
}
catch (Exception ex)
{
//Log exception here
}
}

///

/// Deserializes an xml file into an object list
///

///
/// ///
public T DeSerializeObject(string fileName)
{
if (string.IsNullOrEmpty(fileName)) { return default(T); }

T objectOut = default(T);

try
{
string attributeXml = string.Empty;

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(fileName);
string xmlString = xmlDocument.OuterXml;

using (StringReader read = new StringReader(xmlString))
{
Type outType = typeof(T);

XmlSerializer serializer = new XmlSerializer(outType);
using (XmlReader reader = new XmlTextReader(read))
{
objectOut = (T)serializer.Deserialize(reader);
reader.Close();
}

read.Close();
}
}
catch (Exception ex)
{
//Log exception here
}

return objectOut;
}




Snippet MVC .NET C#: Liste des contrôleurs et actions par réflexion

Snippet MVC .NET C#: Liste des contrôleurs et actions par réflexion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace Tools.ControllerLister
{

public class ControllerLister
{
///

/// Retourne une liste des classes d’un type spécifié
///

/// Le type à lister
/// Liste de classes
private static List GetSubClasses()
{
return Assembly.GetCallingAssembly().GetTypes().Where(type => type.IsSubclassOf(typeof(T))).ToList();
}

///

/// Retourne une liste de string contenant les controleurs disponibles
///

/// Liste des noms de controleurs
public static List GetControllerNamesList()
{
List controllerNames = new List();
GetSubClasses().ForEach(type => controllerNames.Add(type.Name));
return controllerNames;
}

///

/// Retourne une liste de string contenant les actions d’un controleur spécifié
///

/// Le nom du controleur /// Liste des noms d’actions
public List GetActionNamesList(string controllerName)
{
var types =
from a in AppDomain.CurrentDomain.GetAssemblies()
from t in a.GetTypes()
where typeof(IController).IsAssignableFrom(t) &&
string.Equals(controllerName, t.Name, StringComparison.OrdinalIgnoreCase)
select t;

var controllerType = types.FirstOrDefault();

if (controllerType == null)
{
return Enumerable.Empty().ToList();
}
return new ReflectedControllerDescriptor(controllerType)
.GetCanonicalActions().Select(x => x.ActionName).Distinct()
.ToList();
}

///

/// Retourne un dictionaire contenant l’ensemble des Controleurs/Actions diponibles
///

/// Dictionnaire des contoleurs/actions
public Dictionary> GetControllersDictonary()
{
Dictionary> dicoControllers = new Dictionary>();

List controls = GetControllerNamesList();
foreach (string control in controls)
{
dicoControllers.Add(control, GetActionNamesList(control));
}

return dicoControllers;
}

public SelectList GetList()
{
List lstControllerItem = GetControllerNamesList();
/**** create parent_id dropdown list with opt-group ****/
List list_controllers = new List();
foreach (string aControllerName in lstControllerItem)
{
bool selected = false;
SelectListItem selectListItem = new SelectListItem() { Value = aControllerName, Text = aControllerName, Selected = selected };
list_controllers.Add(selectListItem);
}
SelectList select = new SelectList(lstControllerItem,”id”,”name”);
return select;
}

///

/// Retourne une string json contenant l’ensemble des Controleurs/Actions diponibles
///

/// String json des noms de controleurs/actions
public string GetJsonString()
{
Dictionary> dict = GetControllersDictonary();
var jss = new JavaScriptSerializer();
var json = jss.Serialize(dict);
return json;
}
}