我想打電話從反射的方法調用後,使用反射與GUID參數的方法:使用CodeDomCompiler編譯裝配
bool ApproveUser(Guid userId)
我使用的.NET組件CodeDomCompiler
編譯組件,其中,類包含方法駐留,並且方法正在編譯爲
{Void ApproveUser(System.String, Boolean ByRef, Boolean ByRef)}
這與我所期望的完全不同。這是Guid
參數和返回類型轉換成類似這樣的正常行爲?任何暗示是讚賞。謝謝!
編輯:調用方法:
Guid request = new Guid("25867C0D-F2FB-6A6A-AC61-FF0000852B58");
object[] args = new object[1] { request };
object classInstance= compilerResults.CompiledAssembly.CreateInstance("FooClass");
MethodInfo methodInfo = classInstance.GetType().GetMethod("ApproveUser");
bool result = (bool)methodInfo.Invoke(classInstance, args);
我期望的方法獲得成功調用,而不是我收到以下異常:
An exception of type 'System.Reflection.TargetParameterCountException' occurred in mscorlib.dll but was not handled in user code
Additional information: Parameter count mismatch.
編輯2:我從改變參數類型Guid
至int
:
public bool ApproveUser(int smthg)
T現在他編譯的版本是
{Void ApproveUser(Int32, Boolean, Boolean ByRef, Boolean ByRef)}
我認爲你正在尋找兩種完全不同的方法 –
「我試圖從反射中調用一種方法」 - 請告訴我們究竟如何 –
@SergeyBerezovskiy我也這麼認爲,但該組件內只有一個這樣的方法 –