嗨我想使用C#反射來調用傳遞參數的方法,並在返回傳回結果。我怎樣才能做到這一點?我嘗試了幾件事,但沒有成功。我習慣於PHP和Python,因爲這可以在單行上完成,所以這對我來說很困惑。如何使用反射按名稱調用方法
在本質上,這是怎樣的通話將無反射進行:
response = service.CreateAmbience(request);
要求有這些對象:
request.UserId = (long)Constants.defaultAmbience["UserId"];
request.Ambience.CountryId = (long[])Constants.defaultAmbience["CountryId"];
request.Ambience.Name.DefaultText = (string)Constants.defaultAmbience["NameDefaultText"];
request.Ambience.Name.LanguageText = GetCultureTextLanguageText((string)Constants.defaultAmbience["NameCulture"], (string)Constants.defaultAmbience["NameText"]);
request.Ambience.Description.DefaultText = (string)Constants.defaultAmbience["DescriptionText"];
request.Ambience.Description.LanguageText = GetCultureTextLanguageText((string)Constants.defaultAmbience["DescriptionCulture"], (string)Constants.defaultAmbience["DescriptionDefaultText"]);
這是我的函數來實現,其中serviceAction的情況下更高的反射將是「CreateAmbience」:
public static R ResponseHelper<T,R>(T request, String serviceAction)
{
ICMSCoreContentService service = new ContentServiceRef.CMSCoreContentServiceClient();
R response = default(R);
response = ???
}
謝謝喬恩,我現在正在嘗試,但我ge對象結果= method.Invoke(service,new object [] {request});「 - 參數計數不匹配。 – Martin 2010-06-24 13:40:02
我解決了它。你的解決方案的工作原理,但反思並沒有拿起1個參數的服務包裝。謝謝你的幫助。 – Martin 2010-07-06 08:16:19