我想編寫一個有趣的技巧,我相信我曾經在Java程序中看到過,可能在一些C#代碼中。使用共享函數創建一個類的新實例,使用隱藏的構造函數
我有一個靜態方法,它將一個ID作爲一個整數,在表中查找它,然後使用該行中的信息創建並返回該類的一個實例。事情是,我想讓某個構造函數僅對我的靜態函數可見,而不是對任何人都可見。我查看了各種保護級別的修改,但似乎找不到可能完成此任務的任何修改。有沒有人有任何想法,我可能會做到這一點?
我想編寫一個有趣的技巧,我相信我曾經在Java程序中看到過,可能在一些C#代碼中。使用共享函數創建一個類的新實例,使用隱藏的構造函數
我有一個靜態方法,它將一個ID作爲一個整數,在表中查找它,然後使用該行中的信息創建並返回該類的一個實例。事情是,我想讓某個構造函數僅對我的靜態函數可見,而不是對任何人都可見。我查看了各種保護級別的修改,但似乎找不到可能完成此任務的任何修改。有沒有人有任何想法,我可能會做到這一點?
爲什麼不把構造私有?
Public Class Foo
Private Sub New()
End Sub
Public Shared Function CreateFoo (bar As Integer) As Foo
Return New Foo()
End Sub
End Class
對,偏頭痛藥物是開始影響我的工作。你的解決方案是正確的,不介意我。 – user978122
這將是一個「快速解決」這個,但絕不是你正在尋找什麼。
用您需要的構造函數創建一個繼承的類,然後以其基本格式返回該類。這將使構造器「隱形」 ATLEAST只要你與DERP
Public Class Herp
Inherits Derp
Public Sub New(ByVal Secret As String)
_Secret = Secret
End Sub
End Class
Public Class Derp
Protected _Secret As String
Public Sub New()
End Sub
End Class
工作,那麼這樣做:
Public Shared Function GetDerp() As Derp
Dim derp As Derp = New Herp("Secret")
Return Derp
End Function
寫得很漂亮 –
請賜教我這是什麼收益:) – WozzeC
「可見性」是相對的。 Net Runtime可以調用該方法,因此您可以通過反射來調用它。看到這裏例如:http://stackoverflow.com/questions/135443/how-do-i-use-reflection-to-invoke-a-private-method-in-c – igrimpe