Nehmen wir folgenden Code:

Code:
Public Function getString() As String {
  Return "Test";
}

Code:
#UseInterface Web, Gui;

Function main() {
  Var ref As New CMyScript(8795);
  Var f As CDelegate = ref.GetDelegate("getString");
  Var ret As String = f.Invoke();
  ScriptContext.WriteAppLog(ret);
}

Function CallBack_PageBeforeRender(e As CGuiEventOnPageBeforeRender)
{
  main();
}

Function Init(){
  main();
  //ScriptContext.EnableExtension(); 
  //ScriptContext.RegisterEvent(EGuiEventType.PageBeforeRender, AddressOf CallBack_PageBeforeRender); 
  //ScriptContext.ActivateEvents();
} 

Init();

Alles funktioniert einwandfrei und der Applog "Test" wird geschrieben.

Entkommentiert man jedoch die Zeilen, die die Extension aktivieren, erhält man folgende Fehlermeldung:


Code:
[NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.]
   bei stne.CScriptContext.get_Current() in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 542.
   bei stne.Scripting.Types.CScript.GetScript() in d:\source\arakis\dev1\projects\stne\game\Scripting\Objects.cs:Zeile 5843.
   bei stne.CImpersonationDelegate.Invoke(Object[] args) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 954.
   bei larne.scripting.Types.CDelegate.Invoke() in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptMethods.cs:Zeile 181.

[TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.]
   bei System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   bei System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   bei System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   bei larne.scripting.TScriptObjectMemberNative.GetValueInternal(TScriptContext Context, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 2667.
   bei larne.scripting.TScriptObjectMemberNative.GetValue(TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 2656.
   bei larne.scripting.Expressions.TCodeExpressionObjectMember.Get(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptExpressions.cs:Zeile 376.
   bei larne.scripting.Commands.TCodeCommandDim.Process(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptCommands.cs:Zeile 150.
   bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1194.

[Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 6, Spalte: 7, Token: 'ret', Script: '_']
   bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1209.
   bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom mem, TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1015.
   bei larne.scripting.TScriptContext.CallMethod(TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 973.
   bei larne.scripting.TScriptObjectMemberCustom.GetValue(TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1852.
   bei larne.scripting.Expressions.TCodeExpressionObjectMember.Get(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptExpressions.cs:Zeile 376.
   bei larne.scripting.Commands.TCodeCommandExpressionCall.Process(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptCommands.cs:Zeile 80.
   bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1194.

[Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 6, Spalte: 7, Token: 'ret', Script: '_']
   bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1209.
   bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom mem, TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1015.
   bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom Mem, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 969.
   bei larne.scripting.TScriptObjectMemberCustom.GetValueInternal(TScriptContext Context, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1868.
   bei larne.scripting.Types.CDelegate.Invoke(Object[] args) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptMethods.cs:Zeile 185.
   bei stne.TScriptExtensionItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 245.

[Exception: Es ist ein Fehler in einer Extension aufgetreten. Extension wurde deaktiviert. Bitte wende dich an den Autor der Extension.]
   bei stne.TScriptExtensionItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 260.
   bei stne.TScriptExtensionManagerUserItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 170.
   bei stne.TUserSession.CallScriptEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Core\UserLib.cs:Zeile 6231.
   bei stne.TstneGamePage.PrepareRender() in d:\source\arakis\dev1\projects\stne\game\Core\WebControls.cs:Zeile 852.
   bei stne.wf_Game.Page_Load(Object sender, EventArgs e) in d:\source\arakis\dev1\projects\stne\game\Game.aspx.cs:Zeile 176.
   bei System.Web.UI.Control.LoadRecursive()
   bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Assembly: stne.dll
Time: 25.03.2014 17:09:11
Server: DE3
User-ID: 25442
STNE-Version: 1.0.74.1155
Compiled at: 24.03.2014 00:32:27
Compiled from: Arakis

Da es insbesondere bei Extension sehr hilfreich ist Code zentral zu organisieren bitte ich um die Behebung dieses Problems

lg
Elchi