1. Juni 2011 12:15
Hallo,
ich habe mir eine DLL mit C# geschrieben, welche mehrer Methoden beinhalten.
Diese funktioniert auch wie gewünscht nur wenn ich im C#-Projekt eine neue Methode nicht am Ende hinzufüge kommt es zu einen Problem.
Beispiel: ich habe folgende Methoden in der Reihenfolge A B und C. Danach habe ich in Navision dies in eine Form eingebunden und die Methoden verwenden (NAVVar.A usw).
Wenn ich nun im C#-Projekt eine Methode D vor C einfüge und diese kompilierte DLL wieder registriere wird in Navision aus NAVVar.C plötzlich NAVVar.D.
Wo liegt hier das Problem.
lg
stony
1. Juni 2011 14:04
das hängt mit der DispId im c# Projekt zusammen. Definierst Du pro funktion manuell fix eine DispId? Automatische Nummerierung führt zu Deinem Fehler.
Bsp:
- Code:
[Guid ("1533D027-C22A-585E-058E-56A218149D23")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface TimerEvents
{
[DispId (0x60020000)]
void Elapsed();
}
[ComVisible(true)]
public interface ICOMTimer
{
double Interval {get; set;}
void Start ();
}
1. Juni 2011 14:07
Nein mache ich nicht. Besten Dank für die Info.
Wo kann ich das nachlesen bzw. ein Beispiel dazu finden.
1. Juni 2011 14:19
Heißt das ich in jeder Methode einfach diese Dispid definiere bzw. kann ich dies mit 1,2 usw. fortlaufend durchnumerieren.
z.B.:
- Code:
public bool Werteholen()
{
[DispId(1)]
....
}
public bool Werteschreiben()
{
[DispId(2)]
....
}