System.Type instanziieren
-
Ich hab einen string gegeben, in dem beispielsweise System.Int32 steht. Nun möchte ich eine Instanz dieses Objekts erstellen:
object myObject = new ???();
Wie kann ich aus diesem string, den ich natürlich auch in eine Instanz der Klasse System.Type packen könnte, eine Instanz erzeugen?
-
Schau Dir mal die Klasse Activator an.
-
Ich kriege den folgenden Fehler zur Laufzeit:
System.MissingMethodException was unhandled Message="No parameterless constructor defined for this object." Source="mscorlib" StackTrace: at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at ide.DocumentContainer.openDocument(String strFile) in D:\Eigene Dateien\Visual Studio 2005\Projects\ide\Document.cs:line 126 at ide.ProjectExplorer.onDoubleClick(Object sender, EventArgs e) in D:\Eigene Dateien\Visual Studio 2005\Projects\ide\SolutionExplorer.cs:line 237 at System.Windows.Forms.Control.OnDoubleClick(EventArgs e) at System.Windows.Forms.TreeView.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at ide.MainForm.Main() in D:\Eigene Dateien\Visual Studio 2005\Projects\ide\mainform.cs:line 279 at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
-
till_hm schrieb:
System.MissingMethodException was unhandled Message="No parameterless constructor defined for this object." Source="mscorlib" StackTrace:
Wie aussagekräftig sollen Fehlermeldungen denn noch sein? Soll er dir das vielleicht vorsingen?!?
"No parameterless constructor defined for this object."
Entweder du definierst dir nen parameterlosen KOnstruktor, oder du musst der CreateInstance Funktion die Parameter mitgeben.
-
Talla schrieb:
Wie aussagekräftig sollen Fehlermeldungen denn noch sein? Soll er dir das vielleicht vorsingen?!?
Wäre an sich ganz schön, aber das hier hat überhaupt nichts mit der Fehlermeldung zu tun: No parameterless constructor available.
Der Konstruktor hatte keine Parameter, aber war nicht public und konnte daher nicht aufgerufen werden.
-
Wieso? Wenn der Konstruktor private ist ist er nach aussen nicht verfügbar.
Damit ist die Aussage, dass kein parameterloser Konstruktor verfügbar ist 100% korrekt.
-
Und woher sollen wir das riechen wenn du keinen Code postest