Необходимо использовать то, что является самым дешевым и известным прежде всего платформой, и прекратить дело. Путаница высокоуровневых языков является тяжелой проблемой, потому что потоки кода операции VM не страдают от двух самых больших проблемных собственных потоков кода операции, сделайте: идентификация функции/метода и искажение регистра.
то, Что необходимо знать об инвертировании байт-кода, - то, что это уже - общепринятая практика для тестеров безопасности, чтобы рассмотреть прямой X86-код и найти уязвимости в нем. В необработанном X86 Вы не можете обязательно даже найти допустимые функции, уже не говоря о дорожке локальная переменная в течение вызова функции. Почти ни при каких обстоятельствах делают инверторы собственного кода имеют доступ к именам функций и именам переменной---, если они не рассматривают код Microsoft, для которого MSFT услужливо предоставляет ту информацию общественности.
"Dotfuscation" работает преимущественно путем скремблирования имен функций и имен переменной. Вероятно, лучше сделать это, чем публикуют код с информацией об уровне отладки, где Отражатель буквально бросает Ваш исходный код. Но что-либо, что Вы делаете вне этого, вероятно, войдет в убывающую доходность.
Вы можете использовать linq to xml, чтобы делать то, что вы хотите (если я понимаю, что вы хотите)
string data = "<data><test>foo</test><test>foobbbbb</test><bar>123</bar><username>foobar</username></data>";
XDocument doc = XDocument.Parse(data);
Dictionary<string, string> dataDictionary = new Dictionary<string, string>();
foreach (XElement element in doc.Descendants().Where(p => p.HasElements == false)) {
int keyInt = 0;
string keyName = element.Name.LocalName;
while (dataDictionary.ContainsKey(keyName)) {
keyName = element.Name.LocalName + "_" + keyInt++;
}
dataDictionary.Add(keyName, element.Value);
}
XML-данные
<?xml version="1.0" encoding="UTF-8"?>
<data>
<resource key="123">foo</resource>
<resource key="456">bar</resource>
<resource key="789">bar</resource>
</data>
Код преобразования
string s = "<data><resource key=\"123\">foo</resource><resource key=\"456\">bar</resource><resource key=\"789\">bar</resource></data>";
XmlDocument xml = new XmlDocument();
xml.LoadXml(s);
XmlNodeList resources = xml.SelectNodes("data/resource");
SortedDictionary<string,string> dictionary = new SortedDictionary<string,string>();
foreach (XmlNode node in resources){
dictionary.Add(node.Attributes["key"].Value, node.InnerText);
}
Этот вопрос задавался здесь раньше, поэтому вы можете найти все ответы по этой ссылке:
преобразовать xml в отсортированный словарь
Надеюсь, это поможет.
Ваш вопрос действительно не очень ясен, но я думаю, что это делает то, что вы хотите:
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<xml>
<mengde>100</mengde>
<type>2</type>
<foo>bar</foo>
</xml>");
Dictionary<string, string> d = new Dictionary<string, string>();
foreach (XmlNode n in doc.SelectNodes("/xml/*")
{
d[n.Name] = n.Value;
}
Это не совсем то, что вы ищете, но может представлять интерес: http://blogs.msdn.com/csharpfaq/archive/2009/10/01/ dynamic-in-c-4-0-introduction-the-expandoobject.aspx