VB Interop fra C#
Jeg er blevet nødsaget til at Interope en VB Dll for at løse en OPC Relateret opgave. men jeg står lige nu med et problem. (Det er dog slet ikke sikkert det er interopen der er problement)...Jeg har ifl. API'et en metode:
GetItemProperties( ItemID As String, Count As Long, ByRef PropertyIDs() As Long, ByRef PropoertyValues() As Variant, ByRef Errors() As Long)
Da det er en registeret COM har den været nem nok at interope som sådan da VS2005 har gjort det meste af arbejdet for mig, men nu står jeg med en signatur på overstående metode som:
GetItemProperties(string ItemID, int Count, ref System.Array PropertyIDs, out System.Array PropertyValues, out System.Array Errors)
Det ser jo i bund og grund også fint ud... så jeg formoede at de ville være fint at give den Int og Object Arrays, men PT hænger jeg på en fejl :
System.ArgumentException : Value does not fall within the expected range
static Array values = (Array) new object[ 1 ];
static Array errors = (Array) new object[ 1 ];
static Array ids = (Array) new int[ 1 ];
private static string GetAccessebility( string str )
{
try
{
ids[ 0 ] = 5;
server.GetItemProperties( str, 0, ref (ids as Array), out ( values as Array ), out ( errors as Array ) );
}
catch ( Exception ex )
{
Console.WriteLine( "{0} occured!: {1}", ex.GetType(), ex.Message );
Console.WriteLine( ex.StackTrace );
Console.ReadLine();
}
return "RW"; //Return Dummy until fixed
}
Nogle der lige kan pointe mig i den rigtige retning...
Nogen med at Marshale til og fra Native types evt.?
