目前,我正在使用几个对象,以便从需要多次转换的事件中获得一个属性。
我担心的是,是否有更好、可能更短的方法来做到这一点。
System.Windows.RoutedEventArgs eventTrack = (System.Windows.RoutedEventArgs)e;
FluidKit.Controls.ElementFlow fluidItem = (FluidKit.Controls.ElementFlow)eventTrack.OriginalSource;
Client.DataModel.Advertisement adv = (Client.DataModel.Advertisement)fluidItem.ClickedItem;
string test = adv.ShopId.ToString();发布于 2014-03-19 10:46:01
嗯,你没什么可以做的-你可以尝试像这样的构造
Advertisement adv = ((e as RoutedEventArgs).OriginalSource as ElementFlow).ClickedItem as Advertisement;但这很难看。还有一些方法具有dynamic关键字,这在.NET 4中是可维护的:
dynamic eventArgs = e;
dynamic adv = e.OriginalSource.ClickedItem;但这对性能的影响是不利的。
我认为,在保持低性能影响的同时,使用它的方式(可能没有这些名称空间)对于代码可读性来说是最好的。
发布于 2014-03-19 10:51:04
您可以使用多个浇铸I(同一行):
string adv = ((Client.DataModel.Advertisement)(((FluidKit.Controls.ElementFlow)(((System.Windows.RoutedEventArgs)e).OriginalSource)).ClickedItem)).ShopId.ToString();或者,您可以使用Migol提到的dynamic关键字。
https://stackoverflow.com/questions/22503192
复制相似问题