Определение кастинга объекта - PullRequest
0 голосов
/ 20 января 2010

У меня есть код ниже

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

Моя проблема только во время выполнения, я знаю, если 'this.ParentToolPane.SelectedWebPart' имеет тип RssFeedReader или типа 'RssCountry'

Как бы я проверил тип объекта и присвоил ему подходящее значение?

Большое спасибо,

Ответы [ 2 ]

4 голосов
/ 20 января 2010

Вы можете сделать это:

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

Чтобы проверить, относится ли он к определенному типу. Кроме того, вы можете использовать «как», чтобы использовать его как тип, и он будет нулевым, если он не был этого типа.

RssFeedReader reader = this.ParentToolPane.SelectedWebPart as RssFeedReader;
if (reader != null)
{
    //...
}
3 голосов
/ 20 января 2010

Можно сказать

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;
}

Но будьте осторожны. Практически каждый раз, когда вы основываете свою логику на типе, это неприятный запах дизайна!

...