我有一个父类(Foo),共享方法sharedMethod()
。它是MustInherit
。
Bar
和Baz
类继承自Foo。我会做那样的事情:
Dim baz as New Baz()
Dim bar as New Bar()
baz.sharedMethod()
bar.sharedMethod()
在Foo
sharedMethod()
内,我需要知道是谁调用了它。我需要班级名称。因此,使用上面的示例,它将分别是Baz
或Bar
。
答案 0 :(得分:4)
这是不可能的,你没有Me变量来知道类的类型。为了避免产生可能的错觉,你应该这样写:
Foo.sharedMethod()
答案 1 :(得分:0)
在你的功能中你可以使用:
Me.GetType().Name
这假设您的方法未声明为
Private/Public/Protected Shared MyMethod()
当你说“sharedmethod”时,你只是意味着两个类都可以访问该方法。如果您有实际的共享方法,那么您需要使用反射和诊断中的某些内容来获取此信息described here。
答案 2 :(得分:0)
为什么你需要知道这个?这似乎不是“正确的方式”去做事情。如果您需要共享方法对其调用者执行一些特殊操作,那么将Foo作为共享方法的参数(此时可能不值得再共享它!)。
答案 3 :(得分:0)
您可以为sharedmethod提供一个参数并指明这一点。
答案 4 :(得分:0)
您应该考虑覆盖子类中的方法而不是使用共享方法。在覆盖中,请确保调用基类方法。如果父方法中有功能需要知道调用它的内容(并且不能移动到子类),那么您应该考虑使用泛型。然后在子类的内部,你将子类型传递给foo的构造函数。