使用变量值作为要在C#中返回值的变量的名称

时间:2010-01-12 20:53:44

标签: c# web-services reflection

我正在编写一个Web服务,将某些数据暴露给我们的第三方应用程序。他们的团队需要一种通用的方法来检索系统中的字段值。我写过一堂课,班上唯一的公共成员就是他们需要的价值观。我想要做的是让它们传递一个枚举字符串,该字符串是他们想要检索的成员的名称,如果它是公共成员的有效名称,则返回该成员的值。我正在弄乱.net中的一些反射方法,但不能完全得到我正在寻找的行为。我正在尝试写一些东西来重新创建这个伪代码的功能:

public Object webserviceMethodToReturnValue(Guid guidOfInternalObject, String nameOfProperty)
{
    internalObject obj = new internalObject(guid); //my internal company object, which contains all the public members the external company will need
    Object returnObject = obj.{nameOfProperty}; //where name of property is evaluated as the name of the member of the internalOject
    return returnObject; //returning an object that could be casted appropriately by the caller
}

这样你就可以调用这样的服务:

String companyName = (String)webserviceMethodToReturnValue(guid, "companyName");

3 个答案:

答案 0 :(得分:4)

您需要调用GetProperty方法,如下所示:

PropertyInfo property = typeof(InternalObject).GetProperty(nameOfProperty);
return property.GetValue(obj, null);

请注意它不会很快。

为了加快速度,您可以使用.Net 3.5中的表达式树在运行时创建返回值的静态类型方法。

答案 1 :(得分:1)

答案 2 :(得分:0)

是的!你会这样做:typeof(InternalObject).GetProperty(nameOfProperty).GetValue(obj,null)