![]() |
[C#] Constructor chaining
Hallo ihrse,
folgendes Problem: Ich habe eine Klasse mit zwei Konstruktoren.
Code:
und
public GlobalHotkey(Control control)
Code:
Nun will ich, dass der Konstruktor mit dem Control-Argument den Konstruktor mit dem IntPtr-Argument aufruft. Das hab ich so hingekriegt:
public GlobalHotkey(IntPtr handle)
Code:
Nun möchte ich aber eine ArgumentNullException werfen, wenn das Control-Argument null ist. Aber ich bekomms einfach nich hin, bin ich zu doof oder geht das wirklich nich?
public GlobalHotkey(Control control): this(control.Handle) {}
|
Re: [C#] Constructor chaining
Auf Anhieb wüsste ich nur eine etwas unsaubere Lösung mithilfe einer Utilty-Funktion, z.B.
Code:
und dann im Konstruktoraufruf eben
IntPtr HandleFromControl(Control control)
{ if (control != null) { return control.Handle; } throw new ArgumentNullException("control"); }
Code:
public GlobalHotkey(Control control): this(HandleFromControl(control)) {}
|
Re: [C#] Constructor chaining
Zitat:
Ist übrigens nicht unsauber. Die CLR erlaubt es fast nix vor dem ctor des Vorgängers aufzurufen. Kein callvirt, kein SEH, ... Da C# ständig callvirt nutzt wäre eine Instanzmethde ein wenig heikel, deshalb statisch. |
Re: [C#] Constructor chaining
Hm, okay. Nicht sehr schön, aber wenn's sein muss... Danke euch.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz