首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在应用强制转换时创建多个对象?

如何避免在应用强制转换时创建多个对象?
EN

Stack Overflow用户
提问于 2014-03-19 10:41:45
回答 2查看 61关注 0票数 1

目前,我正在使用几个对象,以便从需要多次转换的事件中获得一个属性。

我担心的是,是否有更好、可能更短的方法来做到这一点。

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-19 10:46:01

嗯,你没什么可以做的-你可以尝试像这样的构造

代码语言:javascript
复制
Advertisement adv = ((e as RoutedEventArgs).OriginalSource as ElementFlow).ClickedItem as Advertisement;

但这很难看。还有一些方法具有dynamic关键字,这在.NET 4中是可维护的:

代码语言:javascript
复制
dynamic eventArgs = e;
dynamic adv = e.OriginalSource.ClickedItem;

但这对性能的影响是不利的。

我认为,在保持低性能影响的同时,使用它的方式(可能没有这些名称空间)对于代码可读性来说是最好的。

票数 5
EN

Stack Overflow用户

发布于 2014-03-19 10:51:04

您可以使用多个浇铸I(同一行):

代码语言:javascript
复制
string adv = ((Client.DataModel.Advertisement)(((FluidKit.Controls.ElementFlow)(((System.Windows.RoutedEventArgs)e).OriginalSource)).ClickedItem)).ShopId.ToString();

或者,您可以使用Migol提到的dynamic关键字。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22503192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档