3
A
回答
9
如果您的工廠和您的類在同一個程序集中,您可以在內部標記構造函數。這將使得程序集外的任何類都不能調用構造函數(沒有反射)。您的工廠在同一個裝配中,將構造函數視爲公共的,因此可以訪問它們。
或者,您可以使構造函數專用,並在工廠內使用反射來實例化對象。你使用反射進行了一次小小的打擊,但是這沒有彙編限制,並且還用於使同一彙編中的其他類不使用工廠以外的其他類。
0
您需要多少保護?
只需將該構造函數標記爲「使用工廠!」即可。應該在大多數情況下工作。 (如果它不工作,加上「如果你不使用工廠:-)
在出廠你打開警告過你會被解僱。
1
一些示例代碼中,我與反射放在一起與私有構造函數實例化對象:
Private Shared Function CreateObject(Of t)() As t
Try
Dim ci As ConstructorInfo = GetType(Class1).GetConstructor(CType(BindingFlags.Instance + BindingFlags.NonPublic, _
BindingFlags), Nothing, Type.EmptyTypes, Nothing)
Dim x As t = CType(ci.Invoke(Nothing), t)
Return x
Catch ex As NullReferenceException
Throw New MissingMethodException("No private constructor found")
Catch ex As Exception
Throw
End Try
End Function
相關問題
- 1. 防止直接實例化的工廠類
- 2. 如何防止某個類的多個對象實例化
- 3. 如何使用工廠方法在XAML中實例化對象
- 4. 如何讓工廠類在PHP中創建對象實例?
- 5. 防止抽象類實例化
- 6. 防止其他類的類實例化
- 7. C++:防止抽象基類的任何實例化的方法?
- 8. 服務工廠實例化bean如何訪問httpServletRequest對象?
- 9. 如何使用工廠實例化通用對象
- 10. 使用Spring容器實例化域對象和工廠對象
- 11. 在實例化新的Linq-to-SQL對象後防止插入
- 12. 自定義對象工廠
- 13. 防止對象的多個實例
- 14. 實例化對象的類
- 15. 實例化工廠的對象的名稱是什麼?
- 16. 防止在nodejs中實例化對象時發生踩踏
- 17. 如何防止類的實例繁殖
- 18. 如何在JavaScript中處理對象定義與實例化?
- 19. 直接調用AngularJS上工廠實例化的對象
- 20. 如何在Ruby中專門化只能通過工廠實例化的類?
- 21. 通用工廠類實例化
- 22. 如何在類中實例化$ this類的對象? PHP
- 23. 自定義類的實例化對象的超
- 24. 阻止類實例化standalone,從工廠啓用
- 25. c#實例化自定義對象
- 26. 爲什麼我不能在類定義中實例化同一類的對象
- 27. 如何防止依賴注入的類實例化?
- 28. 如何防止具體類的實例化?
- 29. 測試類中的對象實例化
- 30. 允許在PHP中使用抽象工廠模式實現自定義類實例化
謝謝,我正在考慮的反思,但不希望我不得不走這一步我已經添加了一個答案與一些示例代碼。 – Simon 2009-11-25 09:09:21