Передача типа как параметра атрибуту

Я написал несколько общий механизм десериализации, который позволяет мне создавать объекты из двоичного формата файла, используемого приложением C ++.

Чтобы все было чисто и легко менялось, я создал класс Поле , который расширяет Атрибут , конструируется с Поле (смещение int, тип строки, длина int, int padding) и применяется к атрибутам класса, которые я хочу десериализовать. Вот как это выглядит:

[Field(0x04, "int")]
public int ID = 0;

[Field(0x08, "string", 0x48)]
public string Name = "0";

[Field(0x6C, "byte", 3)]
public byte[] Color = { 0, 0, 0 };

[Field(0x70, "int")]
public int BackgroundSoundEffect = 0;

[Field(0x74, "byte", 3)]
public byte[] BackgroundColor = { 0, 0, 0 };

[Field(0x78, "byte", 3)]
public byte[] BackgroundLightPower = { 0, 0, 0 };

[Field(0x7C, "float", 3)]
public float[] BackgroundLightAngle = { 0.0f, 0.0f, 0.0f };

Вызов myClass.Decompile (pathToBinaryFile) затем извлечет данные из файла, считывая правильные типы и размеры с правильными смещениями.

Однако я нахожу что передача имени типа в виде строки уродлива.

Можно ли передать тип более элегантным, но коротким способом и как?

Спасибо.

9
задан user703016 29 April 2011 в 08:56
поделиться