如何在应用强制转换时避免创建多个对象
本文关键字:创建 对象 转换 应用 | 更新日期: 2023-09-27 17:50:52
目前,我正在使用几个对象,以便从需要多次强制转换的事件中获得属性。
我担心是否有更好的,可能更短的方法来做到这一点。
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();
嗯,对此你无能为力——你可以尝试像
这样的结构Advertisement adv = ((e as RoutedEventArgs).OriginalSource as ElementFlow).ClickedItem as Advertisement;
,但这是相当丑陋的。还有一个dynamic
关键字的方法在。net 4中可用:
dynamic eventArgs = e;
dynamic adv = e.OriginalSource.ClickedItem;
,但是这会影响性能。
我认为你的方式(也许没有那些命名空间)是最好的代码可读性,同时保持较低的性能影响。
可以在同一行中使用多个类型转换:
string adv = ((Client.DataModel.Advertisement)(((FluidKit.Controls.ElementFlow)(((System.Windows.RoutedEventArgs)e).OriginalSource)).ClickedItem)).ShopId.ToString();
或者您可以使用dynamic
关键字如Migol提到的