嗨我想使用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