2016-09-27 3 views
1

Ich habe eine DLL von Drittanbietern, die ich lizenzieren muss. Es hat eine Methode, die ich aus meiner eigenen DLL aufrufen muss. Meine DLL wird in einigen Projekten referenziert und ich möchte nicht an jedem Hoster Änderungen vornehmen. Gibt es eine Methode, die ich in meiner DLL verwenden kann, die eine Methode in meiner DLL aufrufen wird? Wie fügen Sie eine statische Klasse oder einen Konstruktor hinzu, aber ohne expliziten Aufruf dieser Klasse von Hoster? Ich bin mir nicht sicher, ob ich das klar erläutere. Bitte stellen Sie Fragen, wenn nötig.Gibt es eine Möglichkeit, Code in DLL automatisch auszuführen?

Dies ist ein Stück Lizenzierungscode, den ich in meiner DLL platzieren und in derselben DLL aufrufen möchte.

+1

Ein statischer Konstruktor für die Klasse, die Kunden verwenden, sollte tun. – Maarten

+0

Sie möchten, dass dieser Code von allen Assemblys ausgeführt wird, die auf Ihre eigene DLL verweisen? – HimBromBeere

+0

@Maarten, ja aber ich meine ohne expliziten Aufruf an meine DLL ... ich möchte nicht jede Hostapplikation ändern und will es irgendwie auf Domainload oder ... ich weiß nicht, wie wenn das möglich ist alle. –

Antwort

2

Auf der unteren Ebene unterstützt die Laufzeit "Modulinitialisierer". C# bietet jedoch keine Möglichkeit, sie zu implementieren. Daher können Sie am ehesten einen statischen Konstruktor ("type initializer") oder nur einen regulären Konstruktor verwenden.

Es ist jedoch wahrscheinlich eine schlechte Idee, Ihre Lizenzierung entweder in einen Modulinitialisierer oder einen Typinitialisierer einzubinden, da Sie nicht wissen, wann sie ausgeführt werden, und Code könnte nicht zugreifen Ihre Lib. Es ist etwas verpönt, jemandes App herunterzunehmen, weil Ihr Lizenzcode entschieden hat, dass er unglücklich war - , insbesondere, wenn Ihre Bibliothek zu dieser Zeit nicht aktiv aufgerufen wurde.

Als solche: Ich schlage vor, dass der geeignetste Ort, um dies zu tun ist entweder in einem Konstruktor oder eine Post-Konstruktion Initialize(...) Methode (mit dem Werkzeug zu arbeiten, es sei denn, mit gültigen Angaben geliefert).

+0

Vielen Dank für die Antwort. Ich vermutete, dass das unmöglich ist. –

Verwandte Themen