来自外部程序集的ResourceDictionary

我在下面的代码中有一个UnmanagedMemoryStream ,我怎样才能让对象从deserilizing它。 我试图从Assembly集中获取Resource (rd.xaml):

 string address = @"WpfControlLibrary1.dll"; Assembly skinAssembly = Assembly.LoadFrom(address); string name = skinAssembly.GetName().Name +".g"; var manager = new ResourceManager(name, skinAssembly); ResourceSet rs = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true); UnmanagedMemoryStream stream = (UnmanagedMemoryStream)rs.GetObject("rd.baml", true); 

我无法将Stream的内容deserialize化为.net Object (在上面的例子中是一个Resource Dictionary )。 我怎样才能做到这一点?

PS: BinaryFormatterDeserialize操作时抛出exception。

以下是我使用优化代码完成的方法:

 public ResourceDictionary GetResourceDictionary(string assemblyName) { Assembly asm = Assembly.LoadFrom(assemblyName); Stream stream = asm.GetManifestResourceStream(asm.GetName().Name + ".g.resources"); using (ResourceReader reader = new ResourceReader(stream)) { foreach (DictionaryEntry entry in reader) { var readStream = entry.Value as Stream; Baml2006Reader bamlReader = new Baml2006Reader(readStream); var loadedObject = System.Windows.Markup.XamlReader.Load(bamlReader); if (loadedObject is ResourceDictionary) { return loadedObject as ResourceDictionary; } } } return null; } 

OUTPUT:

产量

我想从外部程序集/另一个项目中读取一个ResourceDictionary ,这样我就可以迭代它的Resources来使用。