2010-01-20 148 views
0

我有以下确定对象的铸造

RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart; 

我的问题的代码只有在运行时才能知道,如果“this.ParentToolPane.SelectedWebPart”的类型是RssFeedReader或类型的“RssCountry”

我该如何检查对象类型并将其转换为appropriatley?

非常感谢,

回答

4

你可以这样做:

if (this.ParentToolPane.SelectedWebPart is RssFeedReader) 
    //... 

要检查它是否是某种类型的。或者,您可以使用'as'将其用作类型,如果不是该类型,则它将为空。

RssFeedReader reader = this.ParentToolPane.SelectedWebPart as RssFeedReader; 
if (reader != null) 
{ 
    //... 
} 
3

可以说

RssFeedReader rss; 
rss = this.ParentToolPane.SelectedWebPart as RssFeedReader; 
if(rss != null) { 
    // an RssFeedReader 
} 

RssCountry rc; 
rc = this.ParentToolPane.SelectedWebPart as RssCountry; 
if(rc != null) { 
    // an RssCountry 
} 

if(this.ParentToolPane.SelectedWebPart is RssFeedReader) { 
    // an RssFeedReader 
    RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart; 
} 

if(this.ParentToolPane.SelectedWebPart is RssCountry) { 
    // an RssCountry 
    RssCountry rc = (RssCountry)this.ParentToolPane.SelectedWebPart; 
} 

但是,被警告。几乎任何时候,你在这种类型的基础上的逻辑是一个坏的设计气味!

+0

谢谢我决定创建一个单独的课程 - 因为它闻到不好 – nav 2010-01-20 15:39:37