C# 确定物体的铸造

C# 确定物体的铸造,c#,.net,casting,object,C#,.net,Casting,Object,我有下面的代码 RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart; 我的问题是,只有在运行时我才知道“this.ParentToolPane.SelectedWebPart”的类型是RssFeedReader还是“RSSContry” 如何检查对象类型并适当地强制转换它 非常感谢,您可以这样做: if (this.ParentToolPane.SelectedWebPart is RssFeedRead

我有下面的代码

RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart;
我的问题是,只有在运行时我才知道“this.ParentToolPane.SelectedWebPart”的类型是RssFeedReader还是“RSSContry”

如何检查对象类型并适当地强制转换它

非常感谢,

您可以这样做:

if (this.ParentToolPane.SelectedWebPart is RssFeedReader)
    //...
检查它是否属于某种类型。或者,您可以使用“as”将其用作类型,如果它不是该类型,则它将为null

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

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