我有一個父類(Foo)共享方法sharedMethod()
。它是MustInherit
。 Bar
和Baz
類從Foo繼承。我會做這樣的事情:誰叫共享方法?
Dim baz as New Baz()
Dim bar as New Bar()
baz.sharedMethod()
bar.sharedMethod()
在Foo
的sharedMethod()
,我需要知道誰的說法。我需要班級名稱。因此,使用上面的例子,它將分別是Baz
或Bar
。
我有一個父類(Foo)共享方法sharedMethod()
。它是MustInherit
。 Bar
和Baz
類從Foo繼承。我會做這樣的事情:誰叫共享方法?
Dim baz as New Baz()
Dim bar as New Bar()
baz.sharedMethod()
bar.sharedMethod()
在Foo
的sharedMethod()
,我需要知道誰的說法。我需要班級名稱。因此,使用上面的例子,它將分別是Baz
或Bar
。
在你的功能,你可以使用:
Me.GetType().Name
這是假設你的方法未聲明爲
Private/Public/Protected Shared MyMethod()
而且,當你說「sharedmethod」只意味着兩個類有訪問該方法。如果您有實際的Shared方法,那麼您需要使用Reflection和Diagnostics中的某些內容來獲取這些信息,如described here。
爲什麼你需要知道這個?它似乎不是'正確的方式'去處理事情。如果你需要共享方法來對它的調用者做一些特殊的事情,那麼將Foo作爲共享方法的一個參數(在這一點上,它可能不值得再分享!)。
這是不可能的,你沒有Me變量來知道類的類型。爲了避免創建有可能的錯覺,你應該把它寫這樣的:
Foo.sharedMethod()
您應該考慮重寫子類中的方法而不是使用共享方法。在覆蓋請確保調用基類的方法。如果在父方法內部需要知道調用它的功能(並且不能移動到子類),那麼您應該考慮使用泛型。然後在子類中,你可以將子類型傳遞給foo的構造函數。
我不認爲這是可能的。共享方法不持有對實例的引用。 – SKG 2010-08-20 18:55:54
另外,您不應該從實例調用共享方法。 C#不允許這樣做,但不幸的是,VB會。你應該總是使用類名稱調用共享方法 – 2010-08-20 20:34:06