代码中 smap 对象 如何实例化呢?
NATUPNPLib.IStaticPortMappingCollection mapping = nat.StaticPortMappingCollection;
int i = 0;
NATUPNPLib.IStaticPortMapping smap;
IEnumerator mapEm = mapping.GetEnumerator();
mapEm.Reset();
while (i < mapping.Count)
{
mapEm.MoveNext();
smap = mapEm.Current as IStaticPortMapping;
if (smap != null)
{
this.listBox1.Items.Add(smap.ExternalPort + "\t" + smap.InternalClient + "\t" + smap.Protocol + "\t" + smap.InternalPort);
}
if (smap == null)
{
break;
}
i++;
}
NATUPNPLib.IStaticPortMappingCollection mapping = nat.StaticPortMappingCollection;
int i = 0;
NATUPNPLib.IStaticPortMapping smap;
IEnumerator mapEm = mapping.GetEnumerator();
mapEm.Reset();
while (i < mapping.Count)
{
mapEm.MoveNext();
smap = mapEm.Current as IStaticPortMapping;
if (smap != null)
{
this.listBox1.Items.Add(smap.ExternalPort + "\t" + smap.InternalClient + "\t" + smap.Protocol + "\t" + smap.InternalPort);
}
if (smap == null)
{
break;
}
i++;
}
IStaticPortMapping 貌似是NATUPNPLib对COM接口IStaticPortMapping的.net封装,至于怎么实例化,要看类库NATUPNPLib是怎么实现的
NATUPNPLib.IStaticPortMappingCollection mapping = nat.StaticPortMappingCollection;
NATUPNPLib.IStaticPortMapping smap;
IEnumerator mapEm = mapping.GetEnumerator();
mapEm.Reset();
while (mapEm.MoveNext())
{
smap = mapEm.Current as IStaticPortMapping;
if (smap == null)
{
break;
}
this.listBox1.Items.Add(smap.ExternalPort + "\t" + smap.InternalClient + "\t" + smap.Protocol + "\t" + smap.InternalPort);
}甚至直接用 foreach
我把foreach代码贴上来 帮着看下吧 谢谢了。 //直接使用foreach循环,当MoveNext移到Count位置时,会产生异常,故采用变量i和mapcount进行控制
foreach (object n in mapping)
{
NATUPNPLib.IStaticPortMapping i = n as NATUPNPLib.IStaticPortMapping;
if (i != null)
{
this.listBox1.Items.Add(i.ExternalPort + "\t" + i.InternalClient + "\t" + i.Protocol + "\t" + i.InternalPort);
}
if (i == null)
break;
用catch捕获Exception 得到的就是 未将对象引用设置到对象的实例 的对话框
这句没有关系,其他地方找不到异常啊!
int i = 0;
NATUPNPLib.IStaticPortMapping smap;//单步跳过了这句
IEnumerator mapEm = mapping.GetEnumerator();
mapEm.Reset();//单步跳过了这句 没有执行while循环 直接 执行了 catch (Exception e)
然后messagebox抛出了这个异常!倒地什么问题啊
http://hi.baidu.com/earnandlearn/blog/item/24ed4a60d82dcfd6e7113a31.html
mapping一直为Null。帮不了你。