首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从未知对象获取属性和值

从未知对象获取属性和值
EN

Stack Overflow用户
提问于 2010-11-10 21:11:03
回答 10查看 366K关注 0票数 179

在PHP的世界里,我决定尝试一下C#。我已经搜索过了,但似乎找不到如何做与此等效的答案。

代码语言:javascript
运行
复制
$object = new Object();

$vars = get_class_vars(get_class($object));

foreach($vars as $var)
{
    doSomething($object->$var);
}

我基本上有一个对象的列表。该对象可以是三种不同类型中的一种,并且将具有一组公共属性。我希望能够获得对象的属性列表,循环遍历它们,然后将它们写到一个文件中。我认为这与c#反射有关,但这对我来说是全新的。

任何帮助都将不胜感激。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-11-10 21:15:05

这应该可以做到:

代码语言:javascript
运行
复制
Type myType = myObject.GetType();
IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties());

foreach (PropertyInfo prop in props)
{
    object propValue = prop.GetValue(myObject, null);

    // Do something with propValue
}
票数 320
EN

Stack Overflow用户

发布于 2016-05-11 10:57:30

代码语言:javascript
运行
复制
void Test(){
    var obj = new{a="aaa", b="bbb"};

    var val_a = obj.GetValObjDy("a"); //="aaa"
    var val_b = obj.GetValObjDy("b"); //="bbb"
}
//create in a static class
static public object GetValObjDy(this object obj, string propertyName)
{            
     return obj.GetType().GetProperty(propertyName).GetValue(obj, null);
}
票数 27
EN

Stack Overflow用户

发布于 2010-11-10 21:14:35

嗯,在C#中是类似的。下面是一个最简单的例子(仅适用于公共属性):

代码语言:javascript
运行
复制
var someObject = new { .../*properties*/... };
var propertyInfos = someObject.GetType().GetProperties();
foreach (PropertyInfo pInfo in propertyInfos)
{
    string propertyName = pInfo.Name; //gets the name of the property
    doSomething(pInfo.GetValue(someObject,null));
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4144778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档