2014-10-17 1 views
0

У меня есть XML-строка, которую я хотел бы десериализовать в строго типизированный класс. Приведенный ниже код работает отлично, пока я не помещу его в изолированный плагин, после чего я получаю ошибку FileIOPermissions, потому что я использую класс StringReader. У меня возникают проблемы с десериализацией без использования StringReader. Кто-нибудь есть хорошая альтернатива?CRM 2013: десериализация в изолированном плагине

byte[] binary = Convert.FromBase64String(configurationWebResource.Attributes["content"].ToString()); 
resourceContent = UnicodeEncoding.UTF8.GetString(binary); 

DataContractSerializer serializer = new DataContractSerializer(typeof(ViewSecurityConfiguration)); 

using (StringReader reader = new StringReader(resourceContent)) 
{ 
    using (XmlTextReader xmlReader = new XmlTextReader(reader)) 
    { 
     if (serializer.IsStartObject(xmlReader)) //Throws FileIOPermissions error 
     { 
      currentViewSecurityConfiguration = (ViewSecurityConfiguration)(serializer.ReadObject(xmlReader)); 
     } 
    } 
} 

ответ

0

Попробуйте следующее, который я успешно запустить в песочнице плагин:

byte[] binary = Convert.FromBase64String(configurationWebResource.Attributes["content"].ToString()); 
resourceContent = UnicodeEncoding.UTF8.GetString(binary); 

XmlSerializer serializer = new XmlSerializer(typeof(ViewSecurityConfiguration)); 

using (StringReader reader = new StringReader(resourceContent)) 
{ 
    currentViewSecurityConfiguration = (ViewSecurityConfiguration)serializer.Deserialize(reader); 
} 
+0

К сожалению, я не могу использовать класс XmlSerializer, потому что мой класс ViewSecurityConfiguration использует IDictionary. Вместо того, чтобы переписывать мою реализацию для работы с XmlSerializer, я думаю, что найду или напишу специальный универсальный класс Xml Serializing. Несмотря на это, я думаю, что это, по сути, ответ на мой вопрос, поскольку он показывает, как разработчики обычно десериализуются в изолированном плагине. – Zach

Смежные вопросы