Строка формата BerConverter для строк (октет?)
Я пытаюсь проанализировать и кодировать пакеты с ASN.1. Я надеялся сделать это с помощью класса BerConverter, который присутствует в.Net Framework. Я немного заблудился о том, как кодировать строку формата, которая передается в методы Encode() и Decode(). Код ниже демонстрирует одну из моих проблем:
using System;
using System.DirectoryServices.Protocols;
using NUnit.Framework;
namespace Some.Test
{
[TestFixture]
public class Stackru
{
[Test]
public void Test()
{
var bin = BerConverter.Encode("{s}", "test");
var arr = BerConverter.Decode("{a}", bin);
Assert.AreEqual("test", arr[0]);
}
}
}
Этот код работает. Но, как вы видите, я передаю две строки разных форматов. Метод Encode() получает команду на обработку "String", метод Decode() - на "String". Метод Encode() выдает исключение, если я передаю "{a}", метод Decode() выдает исключение, если я передаю "{s}". Это нормальное поведение? Я ожидаю, что я могу сериализовать и десериализовать, используя ту же строку формата.
Есть ли в сети хорошая документация по этой строке формата? MSDN действительно плохо. Какой-то учебник? Любая рекомендация с открытым исходным кодом для библиотеки, которая может получить структуру пакета путем отражения? Или я должен написать это сам...