Hallo,
nun, soweit bin gestern nun auch gekommen, aber das Problem ist nun:
Wie greife ich bei diesem Objekt nun auf die jeweiligen Funktionen zu?
Bei dir Friedel wäre das:
baseObject.MeinFunktionsname (Parameter1, Parameter2);
Aber dann meckert das Visual Studio 2005 rum und meint, dass das "Object" keine solche Funktion besitzt. 🤔 Daran scheitere ich derzeitig, logisch funktioniert es, nur das Programm meint, dass es noch "Probleme" gibt.
kOOni
Es ist ein Ordner, der bestimmte Module enthält. Diese Module stellen meinem Programm Funktionen zur Verfügung.
Es ist so, dass ich diese Module erst zur Laufzeit auslesen will, da ich nicht weiß, welche Module in dem Ordner drin sind. Würde ich sie per Referenz einfügen, dann könnte ich nur die dort eingetragenen Module verwenden, was ich aber nicht will.
Wenn du es so siehst, dann sind es ein oder mehrere Plugins. =)
Also du hast eine Dll, die Du nicht zur entwurfszeit benutzen willst?
Genau.
kOOni
Hallo,
nein, ich möchte die DLL erst zur Laufzeit einbinden. Sie ist in C# geschrieben.
kOOni
Hallo,
ich möchte während der Laufzeit des Programms eine DLL einbinden, die ich selbst entworfen habe. Diese enthält Funktionen, welchen in verschiedene Klassen gekapselt sind.
Nun möchte ich wissen, wie ich diese Funktionen ausrufen kann. Wichtig ist, dass ich an diese Funktionen noch Parameter übergeben muss.
Meine Lösungsansätze sind bisher:
System.Reflection.Assembly.LoadFile ("deineDLL.dll");
[Dll Import ... ]
Bei zweiterem habe ich keine Ahnung, wie da auf die Klasse zugreifen kann, da er mir, so glaube ich, die ganze DLL einfügt.
Ich hoffe, ihr versteht so in etwa, was ich meine =)
kOOni
hab ich mich etwas unverständlich ausgedrückt oder sonst was, dann schreibt mir bitte. würde mich freuen, wenn sich hier noch einige äußern würden. danke nochmal.
kOOni
ich habe mich über das wochende mit dem remoting unter c# beschäftigt. dazu habe ich sehr viele tutorials consultiert. einige waren von codeproject.com.
bei einem habe ich dann mal ein bein in die tür bekommen, nur leider versucht mich ein kleiner bug, wieder heraus zudrengeln.
meine ausgangssituation:
3 Dateien:
Projekt: Server
Projekt: Client
Inhalt ServerClass.cs:
using System;
namespace NServiceClass
{
public class ServiceClass : MarshalByRefObject
{
private string text;
public string Text
{
get
{
return this.text;
}
set
{
this.text = value;
}
}
}
}
Inhalt Server.cs:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using NServiceClass;
namespace DefaultNamespace
{
class MainClass
{
public static void Main(string[] args)
{
HttpChannel channel = new HttpChannel(8080);
ChannelServices.RegisterChannel(channel);
ServiceClass remoteObject = new ServiceClass();
remoteObject.Text = "Hello Remote-World!";
ObjRef reference = RemotingServices.Marshal( remoteObject,
"remoteObjectURI");
Console.WriteLine ("Server laeuft...");
Console.ReadLine();
}
}
}
Und die 3. Datei, Client.cs:
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using NServiceClass;
namespace DefaultNamespace
{
class MainClass
{
public static void Main(string[] args)
{
HttpChannel channel = new HttpChannel(0);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownClientType(typeof(ServiceClass),
"http://localhost:8080/remoteObjectURI");
ServiceClass remote = new ServiceClass();
Console.WriteLine(remote.Text);
Console.ReadLine ();
}
}
}
mein problem:
ich habe statt http://localhost:8080/remoteObjectURI, http://111.111.111.112:8080/remoteObjectURI geschrieben. diese 1sen und die 2 sind die ip für meinen server-rechner.
ich habe nun auf dem o.g. serverrechner das Programm Server (Server.cs) laufen.
alles bestens.
nun starte ich auf einem 2. rechner im netzwerk das Clientprogramm (Client.cs). Hier wartet er eine kurze zeit (3sek.) und bricht dann ab.
Er sagt mir, dass er nicht auf den Socket etc. zugreifen kann.
was ich will:
das er mir im client programm 'hello remote-world' ausgibt.
kOOni