home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
Language specific support
Deutsches MediaPortal Forum
Plugins & Skins für das MediaPortal
Plugins & Erweiterungen
Ein neues Plugin von einem bestehenden Plugin programmiertechnisch ableiten?
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="bartmanson" data-source="post: 129042" data-attributes="member: 10748"><p>Hallo MisterD,</p><p></p><p>danke für dein Feedback. Ich habe mir die ganze Sache nochmal genauer angeschaut und bei MS folgendes gefunden (<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_10_5_3.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_10_5_3.asp</a>):</p><p></p><p>------------------- schnipp -----------------------</p><p>The following example illustrates the differences between virtual and non-virtual methods:</p><p></p><p>using System;</p><p>class A</p><p>{</p><p> public void F() { Console.WriteLine("A.F"); }</p><p> public virtual void G() { Console.WriteLine("A.G"); }</p><p>}</p><p>class B: A</p><p>{</p><p> new public void F() { Console.WriteLine("B.F"); }</p><p> public override void G() { Console.WriteLine("B.G"); }</p><p>}</p><p>class Test</p><p>{</p><p> static void Main() {</p><p> B b = new B();</p><p> A a = b;</p><p> a.F();</p><p> b.F();</p><p> a.G();</p><p> b.G();</p><p> }</p><p>}</p><p></p><p>In the example, A introduces a non-virtual method F and a virtual method G. The class B introduces a new non-virtual method F, thus hiding the inherited F, and also overrides the inherited method G. The example produces the output:</p><p></p><p>A.F</p><p>B.F</p><p>B.G</p><p>B.G</p><p>---------------- schnapp --------------------</p><p></p><p>Bezogen auf meinen Fall bedeutet das:</p><p>A entspricht PowerScheduler</p><p>B entspricht BIOSScheduler</p><p>A.F entspricht z. B. protected void PowerScheduler.ShutDown()</p><p>B.F entspricht protected new void BIOSScheduler.ShutDown()</p><p></p><p>Der PluginManager von MP macht nun in seiner Methode LoadPlugin folgendes:</p><p>...</p><p>plugin = (IPlugin)newObj;</p><p>...</p><p>Meiner Meinung macht er durch diese Zeile aus meinem BIOSScheduler wieder einen PowerScheduler und ruft auch dessen Methoden auf -> a.F() in obigem Beispiel ergibt als Resultat "A.F". </p><p>Bei mir wäre aber als Resultat "B.F" (also die Methode aus der abgeleiteten Klasse) gewünscht.</p><p>Ich konnte dieses Verhalten auch bereits nachvollziehen: Sobald ich meinen BIOSScheduler in einer eigenen DLL in das plugin\process-Verzeichnis kopiert hatte, erschienen in der MP-Configuration zwei Plugins "PowerScheduler", obwohl ich die relevanten Methoden und Eigenschaften (PluginName, Description, WindowID usw.) in meinem abgeleiteten Scheduler implementiert hatte.</p><p></p><p>Deswegen nochmal die Frage (vielleicht liest es ja mal ein Entwickler (Bavarian?)): Ist dieses Verhalten so gewünscht oder soll es in Zukunft möglich sein, Plugins von anderen Plugins abzuleiten? </p><p></p><p>Oder hab ich immer noch einen Denkfehler? </p><p></p><p>Viele Grüße,</p><p>BartManson</p></blockquote><p></p>
[QUOTE="bartmanson, post: 129042, member: 10748"] Hallo MisterD, danke für dein Feedback. Ich habe mir die ganze Sache nochmal genauer angeschaut und bei MS folgendes gefunden ([url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_10_5_3.asp[/url]): ------------------- schnipp ----------------------- The following example illustrates the differences between virtual and non-virtual methods: using System; class A { public void F() { Console.WriteLine("A.F"); } public virtual void G() { Console.WriteLine("A.G"); } } class B: A { new public void F() { Console.WriteLine("B.F"); } public override void G() { Console.WriteLine("B.G"); } } class Test { static void Main() { B b = new B(); A a = b; a.F(); b.F(); a.G(); b.G(); } } In the example, A introduces a non-virtual method F and a virtual method G. The class B introduces a new non-virtual method F, thus hiding the inherited F, and also overrides the inherited method G. The example produces the output: A.F B.F B.G B.G ---------------- schnapp -------------------- Bezogen auf meinen Fall bedeutet das: A entspricht PowerScheduler B entspricht BIOSScheduler A.F entspricht z. B. protected void PowerScheduler.ShutDown() B.F entspricht protected new void BIOSScheduler.ShutDown() Der PluginManager von MP macht nun in seiner Methode LoadPlugin folgendes: ... plugin = (IPlugin)newObj; ... Meiner Meinung macht er durch diese Zeile aus meinem BIOSScheduler wieder einen PowerScheduler und ruft auch dessen Methoden auf -> a.F() in obigem Beispiel ergibt als Resultat "A.F". Bei mir wäre aber als Resultat "B.F" (also die Methode aus der abgeleiteten Klasse) gewünscht. Ich konnte dieses Verhalten auch bereits nachvollziehen: Sobald ich meinen BIOSScheduler in einer eigenen DLL in das plugin\process-Verzeichnis kopiert hatte, erschienen in der MP-Configuration zwei Plugins "PowerScheduler", obwohl ich die relevanten Methoden und Eigenschaften (PluginName, Description, WindowID usw.) in meinem abgeleiteten Scheduler implementiert hatte. Deswegen nochmal die Frage (vielleicht liest es ja mal ein Entwickler (Bavarian?)): Ist dieses Verhalten so gewünscht oder soll es in Zukunft möglich sein, Plugins von anderen Plugins abzuleiten? Oder hab ich immer noch einen Denkfehler? Viele Grüße, BartManson [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
Language specific support
Deutsches MediaPortal Forum
Plugins & Skins für das MediaPortal
Plugins & Erweiterungen
Ein neues Plugin von einem bestehenden Plugin programmiertechnisch ableiten?
Contact us
RSS
Top
Bottom