Click here to Skip to main content
15,923,083 members
Home / Discussions / C#
   

C#

 
QuestionWin32 Shell Lightweight Utility API (shlwapi.dll) wrapper Pin
Paul Selormey17-Sep-08 18:48
Paul Selormey17-Sep-08 18:48 
AnswerRe: Win32 Shell Lightweight Utility API (shlwapi.dll) wrapper Pin
N a v a n e e t h17-Sep-08 20:58
N a v a n e e t h17-Sep-08 20:58 
GeneralRe: Win32 Shell Lightweight Utility API (shlwapi.dll) wrapper Pin
Paul Selormey17-Sep-08 21:33
Paul Selormey17-Sep-08 21:33 
QuestionNativeMethods is inaccesible due to its protection lavel Pin
amit_8317-Sep-08 18:44
amit_8317-Sep-08 18:44 
QuestionRe: NativeMethods is inaccesible due to its protection lavel Pin
Paul Selormey17-Sep-08 18:51
Paul Selormey17-Sep-08 18:51 
AnswerRe: NativeMethods is inaccesible due to its protection lavel Pin
Igor Velikorossov17-Sep-08 19:29
Igor Velikorossov17-Sep-08 19:29 
QuestionSystem.stackoverflowexception Pin
tauras8117-Sep-08 18:03
tauras8117-Sep-08 18:03 
AnswerRe: System.stackoverflowexception Pin
dybs17-Sep-08 18:13
dybs17-Sep-08 18:13 
GeneralRe: System.stackoverflowexception Pin
tauras8118-Sep-08 2:49
tauras8118-Sep-08 2:49 
QuestionBeginLoadData()????? Pin
Twyce17-Sep-08 17:33
Twyce17-Sep-08 17:33 
AnswerRe: BeginLoadData()????? Pin
Harvey Saayman17-Sep-08 21:03
Harvey Saayman17-Sep-08 21:03 
QuestionPowerPoint Automation Pin
Patrick Kilgore17-Sep-08 12:20
Patrick Kilgore17-Sep-08 12:20 
Questionhow can i get the root folder for my program after setup Pin
ahmedhassan9617-Sep-08 11:26
ahmedhassan9617-Sep-08 11:26 
AnswerRe: how can i get the root folder for my program after setup Pin
DaveyM6917-Sep-08 11:35
professionalDaveyM6917-Sep-08 11:35 
GeneralRe: how can i get the root folder for my program after setup Pin
ahmedhassan9617-Sep-08 12:21
ahmedhassan9617-Sep-08 12:21 
QuestionMigration from C# to java Pin
Monika Patel17-Sep-08 10:41
Monika Patel17-Sep-08 10:41 
QuestionHow to use rtf table of contents in RichTextBox Pin
panoskatws17-Sep-08 9:45
panoskatws17-Sep-08 9:45 
AnswerRe: How to use rtf table of contents in RichTextBox Pin
Dave Kreskowiak17-Sep-08 10:31
mveDave Kreskowiak17-Sep-08 10:31 
QuestionCodepages and character encoding Pin
Miszou17-Sep-08 9:09
Miszou17-Sep-08 9:09 
QuestionBuilding a testing class Pin
OneLessJpeg17-Sep-08 9:02
OneLessJpeg17-Sep-08 9:02 
AnswerRe: Building a testing class Pin
Pete O'Hanlon17-Sep-08 9:07
mvePete O'Hanlon17-Sep-08 9:07 
QuestionDetermining type compatiblity Pin
Clive D. Pottinger17-Sep-08 8:27
Clive D. Pottinger17-Sep-08 8:27 
Hi folks! I've coded myself into another corner... again! I need a guru.

This time, I'm writing code that checks that the parameter list for a call to a method is valid. Why? Because I am dynamically calling various methods with parameters read from an XML file. Why? Don't ask... looooong story.

Breifly, a call to my routine might look like
StandardTest.PerformDALvsDBTest(
  "DALRoutines",    // the class that will contain the method to call
  "InsertCustomer", // the method to be called
  new object[] { 
    DateTime.Parse(parm0), 
    parm1, 
    Int32.Parse(parm2)
  }
);


Okay. So my routine goes through a bunch of checks and finally obtains a reference to the method to be called (MethodInfo.methodRef). The call to the method will be made using
methodRef.Invoke(null, myBindings, null, Params, null);

But first, I must make sure that all the items in the object[] Params are of the right type. To do that I loop through methodRef.GetParameters() and check each one against each Params[index].GetType().
If there are the correct number of parameters, and they are all of the correct type, etc, then I will perform the Invoke(), otherwise, I throw an error indicating the method name, the parameter, the expected type and the type that was used:
e.g. "The System.Type for parameter #0 in the parameter list for the method [DALRoutines.InsertCustomer] is System.DateTime; System.TimeSpan was expected".

So, here is my problem:
I have a method that expects a parameter to be an Int32. However, when the value is passed in the object[] Params, it seems to be changed to Int16 (even if I specifically indicate that it is Int32 as above - I assume that it is because it is a small value). When my routine starts comparing parameter types it spits out an error saying it was passed an Int16 when it expects an Int32. The kicker is that the call to Invoke() would still work if it was made - .NET does not seem to mind and handles the conversion inherently. But I can't find a way to tell that it would work - all I can see is that the two types are different.

I have tried investigating different ways to tell if the types are compatible (including Type.IsSubclassOf() and Type.IsAssignableFrom()) but I can't seem to find anything that will let me know that an Int16 can be used as the value for an Int32 parameter.

Does anyone know a way to do this?

Clive Pottinger
Victoria, BC

AnswerRe: Determining type compatiblity Pin
Pete O'Hanlon17-Sep-08 9:11
mvePete O'Hanlon17-Sep-08 9:11 
AnswerRe: Determining type compatiblity Pin
User 665817-Sep-08 9:23
User 665817-Sep-08 9:23 
GeneralRe: Determining type compatiblity Pin
Clive D. Pottinger17-Sep-08 9:51
Clive D. Pottinger17-Sep-08 9:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.