我有一个ROUTE
类型的对象的列表。
每个ROUTE
对象都包含字符串属性,但是某些对象不包含EXITSIGNAL
属性(不存在,不为null)
一些代码:
List<ROUTE> SelectedRoutes = new List<ROUTE>();
foreach (var route in XmlData.ROUTES)
{
if (sig.SignalID.Equals(route.ENTRANCESIGNAL) &&
sig.SignalDIRECTION.Equals(route.DIRECTION) &&
"Condition on EXITSIGNAL property")
{
SelectedRoutes.Add(route);
}
}
如何添加第三个条件,使我只能选择包含此属性“ EXITSIGNAL”的对象
答案 0 :(得分:0)
理想情况下,您将测试对象是否属于包含该属性的类。即if (route is ROUTECLASS_WITH_EXITSIGNAL)
...
并且,如果您有几个具有该属性的类,则使它们从包含EXITSIGNAL且从ROUTE派生的公共类派生,然后测试是否is EXITSIG_CLASSTYPE
。
根据您提供的代码,您可以获取ROUTE对象的Type信息,并假设所有EXITSIGNAL属性的类型都相似,以查看其是否支持EXITSIGNAL属性。
List<ROUTE> SelectedRoutes = new List<ROUTE>();
foreach (var route in XmlData.ROUTES)
{
bool bHasExitSig = false;
if (route.GetType().GetProperty("EXITSIGNAL", typeof(string)) != null)
{
bHasExitSig = true;
}
if (sig.SignalID.Equals(route.ENTRANCESIGNAL) &&
sig.SignalDIRECTION.Equals(route.DIRECTION) &&
bHasExitSig)
{
SelectedRoutes.Add(route);
}
}