|
using System;
using System.Reflection;
namespace YAMP
{
public abstract class Value
{
static readonly Value _empty = new ScalarValue();
public static Value Empty
{
get
{
return _empty;
}
}
public string Header
{
get
{
return GetType().Name.Replace("Value", string.Empty);
}
}
public abstract Value Add(Value right);
public abstract Value Subtract(Value right);
public abstract Value Multiply(Value right);
public abstract Value Divide(Value denominator);
public abstract Value Power(Value exponent);
public abstract byte[] Serialize();
public abstract Value Deserialize(byte[] content);
internal static Value Deserialize(string name, byte[] content)
{
name = name + "Value";
var types = Assembly.GetCallingAssembly().GetTypes ();
foreach(var target in types)
{
if(target.Name.Equals(name))
{
var value = target.GetConstructor(Type.EmptyTypes).Invoke(null) as Value;
return value.Deserialize(content);
}
}
return Value.Empty;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.