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