štvrtok 27. júna 2013

Preprocessor directives vs. Conditional Attributes

This is a simple example where you can see proprocessor directive and also Conditional Attribute.




Code Snippet
     class Program
  1. {
  2.    static void Main(string[] args)
  3.    {
  4.  
  5. # if DEBUG
  6.      Console.WriteLine("Application starts in debug mode");
  7. # else
  8.     Console.WriteLine("Application starts NOT in debug mode");
  9. # endif
  10.  
  11.      SayHelloOnlyInDebug();
  12.  
  13.      Console.ReadLine();
  14. }
  15.  
  16.  [Conditional("DEBUG")]
  17.   private static void SayHelloOnlyInDebug()
  18.   {
  19.     Console.WriteLine("Hello!");
  20.   }
  21. }

       











































And what is  different between  proprocessor directive and Conditional Attribute?
Proprocessor directive - the statement in #if #else is compiled conditionally dependent upon thepresence of the DEBUG symbol. 
Conditional Attribute - You might feel more comfortable with the Conditional attribute, which can be used to exclude entire methods, without needing to complicate the source with conditionals on the calling side.





streda 26. júna 2013

JSON string to object and vice versa


 Simple example (you need .NET 3.5):
The main class is DataContractJsonSerializer


 ...
using System.Runtime.Serialization;

using System.Runtime.Serialization.Json;

namespace JSonExample
{
    [DataContract]
    public class Person
    {
        [DataMember(Name = "Name")]
        public string Name { get; set; }

        [DataMember(Name = "Age")]
        public int Age { get; set; }
    }
   
    class Program
    {
        static void Main(string[] args)
        {
            var customer = new Person {Age = 25, Name = "Albert"};
            string jSon = JSONSerializer<Person>.Serialize(customer);
            //{"Age":25,"Name":"Albert"}

            var deserializedCustomr = JSONSerializer<Person>.DeSerialize(jSon);
        }
    }

    public static class JSONSerializer<T> where T : class
    {
        /// <summary>
        /// Serializes an object to JSON
        /// </summary>
        public static string Serialize(T instance)
        {
            var serializer = new DataContractJsonSerializer(typeof(T));
            using (var stream = new MemoryStream())
            {
                serializer.WriteObject(stream, instance);
                return Encoding.Default.GetString(stream.ToArray());
            }
        }

        /// <summary>
        /// DeSerializes an object from JSON
        /// </summary>
        public static T DeSerialize(string json)
        {
            using (var stream = new MemoryStream(Encoding.Default.GetBytes(json)))
            {
                var serializer = new DataContractJsonSerializer(typeof(T));
                return serializer.ReadObject(stream) as T;
            }
        }
    }
}