public class Item
{
private int _rowID;
private Guid _itemGUID;
public Item() { }
public int Rid
{
get
{
return _rowID;
}
set { }
}
public Guid IetmGuid
{
get
{
return _itemGuid;
}
set
{
_itemGuid= value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上是我的自定义对象.
我有一个清单:
List<V> myList = someMethod;
Run Code Online (Sandbox Code Playgroud)
其中V是Item类型,我的对象.
我想迭代并获取属性
foreach(V element in mylist)
{
Guid test = element.IetmGuid;
}
Run Code Online (Sandbox Code Playgroud)
当我调试并查看'element'对象时,我可以看到'Quickwatch'中的所有属性,但我不能做element.IetmGuid.
您是否对通用类型V施加约束?您需要告诉运行时V可以是您的Item类型的子类型的任何类型.
public class MyGenericClass<V>
where V : Item //This is a constraint that requires type V to be an Item (or subtype)
{
public void DoSomething()
{
List<V> myList = someMethod();
foreach (V element in myList)
{
//This will now work because you've constrained the generic type V
Guid test = element.IetmGuid;
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意,如果您需要支持多种项目(由Item的子类型表示),则以这种方式使用泛型类是有意义的.
| 归档时间: |
|
| 查看次数: |
40921 次 |
| 最近记录: |