using System; using System.Reflection; namespace Tmp { public class Packer { public Packer() { } public void PackUInt16(ushort value) { } public void PackInt16(short value) { //value.GetType(); Console.WriteLine("value({0}) < -0x80 => {1}", value, value < -0x80); Console.WriteLine("value({0}) < -0x20 => {1}", value, value < -0x20); Console.WriteLine("value({0}) < 0x80 => {1}", value, value < 0x80); Console.WriteLine("value({0}) < 0x100 => {1}", value, value < 0x100); } public void PackObject(T obj) { Type this_type = this.GetType(); string obj_type_name = obj.GetType().ToString(); string method_name = "Pack" + obj_type_name.Substring(obj_type_name.LastIndexOf(".") + 1); //Console.WriteLine(method_name); MethodInfo mi = this_type.GetMethod(method_name); mi.Invoke(this, new object[] { obj }); } public static void Main() { Packer packer = new Packer(); packer.PackObject((ushort)0); packer.PackObject((short)-1); } } }