Прехвърляне на параметри в отражения в C# VS2010

Мога ли да предам низове като аргументи по време на method.Invoke(objectname,object[]params) за метод на подпис Getdetails(int,string,bool) без да ги прехвърлям към съответните типове преди преминаване?


Отражението ще се справи ли с кастинга или трябва динамично да го прехвърля към подходящи типове параметри, съответстващи на сигнатурата на функцията? Извиквам няколко метода с различни сигнатури в едно и също приложение.


И така, ето сценария:

Съхранявам methodId с типове параметри и стойности в таблица и след това ги извличам и извиквам с помощта на отражения. Но получавам TargetInvocationException или Cannot convert System.String to System.Int32.


person Milee    schedule 22.03.2012    source източник
comment
Не, отражението няма да направи кастинга вместо вас. Както разбра.   -  person Hans Passant    schedule 22.03.2012
comment
Благодаря на всички. Трябва ли да създам отделни извиквания за извикващи методи с типове връщане и тези с void като тип връщане?   -  person Milee    schedule 22.03.2012


Отговори (2)


Няма да се справи. Трябва да създадете и подадете обектен масив:

method.Invoke(object,new object[]{1, "test", true});
person Aliostad    schedule 22.03.2012

Вече отговорихте на собствения си въпрос. не можеш да направиш това Параметрите, които предавате, трябва да са от правилния тип.

person Daniel Hilgarth    schedule 22.03.2012