Shared 函数中怎么返回 Class Name

蓝海 2011-11-11 05:44:05
比如,我们在类被实例化后,返回类名的方法是:

Class Person
public function getFullClassName() as string
return me.getType.FullName.Trim
end function
End Class


那么,如果 getClassName() 函数是 shared 的时候该怎么办啊?

Public Mustinherit Class Person
public shared function getFullClassName() as string
return "???" '这里想返回 Inherit 了此类的类名该怎么办?
end function
End Class

public class Man
inherit Person

private mSex as string
'...
end class

'调用意图: 其实,这时候您可能已经发现,我的最终目的是想通过
在类 Man 被实例化之前,直接 Man.getFullClassName() 得到 Man 的全名;
同时又不想把 getFullClassName 写在 Man 里(因为类似 Man 的东西很多)

[求高人指点,100分敬上!谢谢...]

...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-11-11
  • 打赏
  • 举报
回复
你是要做工具类还是要通过继承?

工具类,你传递类型当参数

继承的话,派生类都会有基类的访问级别够的方法
蓝海 2011-11-11
  • 打赏
  • 举报
回复
没有别的办法了吗?

没有就结贴了。。。
宝_爸 2011-11-11
  • 打赏
  • 举报
回复
你可以使用虚拟函数


Public Mustinherit Class Person
public MustOverride function getFullClassName() as string
End Class

public class Man
inherit Person

private mSex as string
public Overrides function getFullClassName() as string
return me.getType.FullName.Trim
end function
end class

使用的时候
Dim obj as Person = new Man
obj.getFullClassName返回的是 man的类名。

不太熟悉vb.net的语法,可能有些许错误,大意就是这样。
宝_爸 2011-11-11
  • 打赏
  • 举报
回复
静态函数(在vb.net中是shared)是不知道继承的。

因此,你只能取得父类类名(也就是Person)
类似于这样GetType(Person).FullName.Trim

而且静态函数独立于类实例存在
Person.getFullClassName()这样调用,除了返回Person,你不可能返回继承类的名字的。



蓝海 2011-11-11
  • 打赏
  • 举报
回复
不好意思,忘了改默认的分了,补分贴
http://topic.csdn.net/u/20111111/05/7d9438ee-c1c8-4bea-8bf5-f93b7a4d2f3c.html

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧