Witam,
jak można wczytać plik dll do tablicy bajtów w C#? Musze czytać przez filestream? Czy jest jakis inny sposób?
pzdr
Szybciej przez:
File.ReadAllBytes();</code>
dzieki,
mam nadzieje że uda sie z takiej formy wczytać dllke później i z niej korzystać
pzdr
No raczej nie bardzo. Może napisz co chcesz uzyskać. Może złą drogą idziesz...
Tak, da się wczytać bibliotekę w formie tablicy bajtów.
A nie lepiej jakoś za pomocą klasy Assembly.LoadXXXX to robić?
Właśnie wczytuje to przez Assembly.Load z tym ze nie wiem co potem za bardzo... wiem ze cos z Assembly.GetTypes trzeba kombinowac bo nie mozna tak po prostu uzyc danych metod z tej wczytanej dllki poniewaz typy sa nieznane dalej ale skoro wczytał to i nie zgłasza żadnych problemów to wydaje mi się ze po prostu musze teraz znaleźć jakis przykład uzycia tak wczytanej dllki.
sry nie napisałem co dokładnie chce uzyskać.. po prostu zwracam tą dllke do innego programu (zdalnego) i tam chce jej uzyć
Kolejny abuser...
Ale to nadal nie widzę sensu, aby wczytywać to jako tablicę bajtów. Możesz przecież DLL'kę wczytać po nazwie.
co prosze? :-D
moge wczytac po nazwie bo jest załadowana w aplikacji z której ja wysyłam tylko ze jak przez Assembly ją zwracam to sie wysypuje ;/ ale udalo mis ie wczytac już przez tablice wiec teraz chcialbym jeszcze jakos uzyc metod w niej zawartych :-)
Oki nie będę wnikał już.
Aby użyć metod i typów posłuż się metodą Assembly.GetTypes a potem na Type masz GetMethods.
byte[] bdll = objget.GetNewClass();
Assembly ax = Assembly.Load(bdll);
var hw = ax.GetType("HelloWorld");
MethodInfo mi = hw.GetMethod("TestMe");
w ostatniej linijce sie wykrzacza Object reference not set to an instance of an object.
nie rozumiem czemu posiadam taka metode w klasie HelloWorld
public void TestMe()
{
Console.WriteLine("Invoked Hello World");
}
Skoro dostajesz w ostatniej linijce to znaczy, że hw jest nullem. Wg. mnie nazwa typu powinna być z Namespace'em.
Masz racje z namespace juz sie nie wykłada ciekawe czemu wczesniej nie zwrocilo bledu tylko dopiero przy GetMethod ale nie wazne a jak mam ja wywołać teraz bo samo pobranie nci nie zmienia domyslam sie ze invoke ale jest jeden problem bo
object result = mi.Invoke();
bo invoke woła jeśc o dwa paremetry pierwszy object a drugi tablice object[] z parametrami, nie wiem co mam podać w pierwszym po prostu bo w drugim jaknie mam parametrow to zwroce pusty object i tyle(mam nadzieje) ale co mam podać jako pierwszy parametr? troche zagmatwane przeciez pobieralem konkretna metode a nie wszytkie naraz...
OK udało sie jednak pokombinowałem i utworzyłem jeszcze instance tego typu pobranego przez Activatora i działa jak trzeba
wielkie dziekie za pomoc! [browar]