문제

파일 시스템 어딘가에 어셈블리가 있습니다. 그 어셈블리에는 자원이 있습니다. 예를 들어 "abc.xaml".

그 자원을 얻을 수있는 방법은 무엇입니까? 반사를 사용하는 방법이 있습니까? 지금까지 해결책을 찾지 못했습니다.

미리 감사드립니다!

편집 : 사전에서 리소스에 액세스하고 싶다고 추가하고 싶었습니다.

도움이 되었습니까?

해결책 2

편집하다: Resourcedictionaries와 함께 작동하는 더 나은 솔루션을 찾았습니다.

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");

글쎄, 나는 그것을 Resourcedictionaries와 함께 일할 수 없었기 때문에 대신 좋은 오래된 리소스 파일을 사용하고 있습니다.) 관심있는 사람이라면 여기에 내가 한 방법은 다음과 같습니다.

Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");

Ian이 제안한 것처럼 반사판으로 "Nameofresource"를 얻을 수 있습니다.

다른 팁

실제로 URI를 다음과 같이 써야합니다.

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"pack://application:,,,/test;component/myresource.xaml");

사본을 잡아라 반사기 (Lutz는 지금 이것을 넘겨주었습니다). 이를 사용하여 자원의 어셈블리와 네임 스페이스 등을보십시오.

그런 다음 임베디드 리소스에서 이와 같은 것을 읽으십시오.

Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
using (System.IO.Stream s = asm.GetManifestResourceStream(<yourname>)
{
    using (System.IO.StreamReader reader = new System.IO.StreamReader(s))
    {
        string xml = reader.ReadToEnd();
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top