确定对象的转换

时间:2010-01-20 15:22:55

标签: c# .net casting object

我有以下代码

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

我的问题仅在运行时我是否知道'this.ParentToolPane.SelectedWebPart'是否为RssFeedReader类型或类型为'RssCountry'

我如何检查对象类型并将其投射到appropriatley?

非常感谢,

2 个答案:

答案 0 :(得分:4)

你可以这样做:

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

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

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

答案 1 :(得分: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;
}

但是,请注意。几乎任何时候你的逻辑基于类型都是一个糟糕的设计气味!