【发布时间】:2017-07-21 17:08:50
【问题描述】:
尽管已经发布了许多问题,但似乎没有一个对我的问题有帮助。
我已经开始了新的 Generics / Reflection 冒险,我只是想了解语法和概念。
我有一个 Generic 类,其中有 X 个属性,其中一个是一个集合,一切正常,但我在按属性名称从集合 props 中提取值时遇到问题。
foreach (var property in typeof(T).GetProperties())
{
if (property.Name == "Props")
{
foreach (var item in (IEnumerable)property.GetValue(type, null))
{
var propertyName = "";
var newValue = "";
var oldValue = "";
sbDescription.AppendLine(strDescriptionVals
.Replace("{0}", (item.ToString() == "PropertyName") ? item.ToString() : "" + ", "));
sbAllNotes.AppendLine(strAllNotes
.Replace("{0}", (item.ToString() == "PropertyName") ? item.ToString() : "")
.Replace("{1}", (item.ToString() == "NewValue") ? item.ToString() : "")
.Replace("{2}", (item.ToString() == "OldValue") ? item.ToString() : ""));
}
}
}
如您所见,我已经确定了属性 Props,现在我想遍历它并按属性名称提取值。
item.ToString() 只打印类属性的命名空间,而不是值
希望各位好心人能给我指明正确的方向?
【问题讨论】:
-
什么是
type变量? -
@Sybren 它的 (T) 属性在每个方法调用上都几乎相同,这就是它是通用的原因。
-
这是一组非常“匿名”的特性和类。问题只是从“集合属性”中检索值而已。
-
有人有什么想法吗?
-
那么你的收藏到底是什么类型的?列表
、IList 、ICollection?你的变量“类型”是什么?这应该是您希望从中获得属性值的对象实例。
标签: c# generics reflection