2010-01-20 5 views
0

J'ai le code ci-dessousDétermination de la coulée d'un objet

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

Mon problème est seulement au moment de l'exécution dois-je savoir si « this.ParentToolPane.SelectedWebPart » est de type RssFeedReader ou de type « RssCountry »

Comment vérifier le type d'objet et le lancer correctement?

Merci beaucoup,

Répondre

4

Vous pouvez le faire:

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

Pour vérifier si elle est d'un certain type. Alternativement, vous pouvez utiliser 'as' pour l'utiliser comme un type, et ce sera null si ce n'était pas de ce type.

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

On pourrait dire

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 
} 

ou

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

Mais, soyez averti. Presque chaque fois que vous basez votre logique sur le type est une mauvaise odeur de conception!

+0

Merci d'avoir décidé de créer une classe séparée - car elle sentait mauvais – nav