J'ai un projet, appelons-le "BASE", qui a un tas de fichiers .CSV en tant que ressources. Le projet fait référence à My.Resources.XXXXXXX dans différentes méthodes où XXXXXXX est le nom de fichier CSV. Je travaille sur une classe qui dérive de "BASE" et je voudrais changer certains des fichiers .CSV et remplacer ceux qui sont dans le projet "BASE" avec le mien. Je voudrais que les méthodes du projet de base utilisent mes fichiers CSV quand il appelle My.Resources.XXXXXX au lieu des fichiers qui se trouvent dans les ressources de "BASE". Des conseils sur la façon de le faire? (Tout langage de .NET est la bienvenue)Comment puis-je hériter, puis remplacer une ressource ou son contenu dans .NET?
1
A
Répondre
1
C'est un peu hackey mais fonctionne très bien:
Dans votre classe dérivée:
Public Class MyApplication
Inherits BaseApplication
Private Shared Property ResourceManager As New MyResourceManager
Shared Sub New()
Const fieldName As String = "resourceMan"
'set base resource manager to my specialized resource manager using reflection'
ReflectionHelper.SetStaticFieldValue(ResourceManager.BaseResourceManagerType, fieldName, ResourceManager)
End Sub
...
End Class
My Custom ResourceManager:
Public Class MyResourceManager
Inherits ResourceManager
Public Property BaseResourceManager As ResourceManager
Public Property BaseResourceManagerType As Type
Public Property MyResourceManager As ResourceManager = My.Resources.ResourceManager
Public Sub New()
MyBase.New()
'get a reference to the resource manager for the base application to keep it around'
Dim ass As Assembly = Assembly.Load("BaseApplication")
BaseResourceManagerType = ass.GetType("BaseApplication.My.Resources.Resources")
BaseResourceManager = ReflectionHelper.GetStaticPropertyValue(BaseResourceManagerType, "ResourceManager")
End Sub
Public Overrides Function GetString(ByVal name As String) As String
Dim ret As String = MyResourceManager.GetString(name)
If ret IsNot Nothing Then
Return ret
Else
Return BaseResourceManager.GetString(name)
End If
End Function
... <override all the other members of ResourceManager in the same fashion as above>
End Class
Questions connexes
- 1. Remplacer xComment avec son contenu
- 2. Comment remplacer une ressource dans un style?
- 3. Comment puis-je chiffrer une fonction ou son contenu dans une classe php?
- 4. Remplacer élément parent avec son contenu
- 5. regex remplacer l'élément span avec son contenu
- 6. Énumération du contenu d'une ressource intégrée .NET à l'exécution
- 7. Comment modifier une ressource bitmap .NET?
- 8. Définition d'une image de fond CSS dans laquelle l'image est une ressource ou une ressource WebResource dans un assembly .NET
- 9. Comment hériter d'un package ou d'une classe dans R?
- 10. Une classe membre peut-elle hériter de son parent?
- 11. Comment hériter des constructeurs avec des arguments dans .NET?
- 12. python: Remplacer un élément HTML en fonction de son contenu
- 13. Comment puis-je aligner un CheckBox avec son contenu?
- 14. Comment puis-je accéder à une ressource intégrée dans une DLL .Net à partir d'une autre DLL (test) .Net?
- 15. Comment remplacer une ressource importée en utilisant Spring @Configuration?
- 16. Tableaux d'impression: adresse mémoire ou son contenu?
- 17. comment SQLite stocke son contenu
- 18. Comment lire, puis écrire dans une ressource incorporée dans C#
- 19. son pling Application .net
- 20. Comment puis-je hériter/remplacer un style forcé d'un thème Windows?
- 21. Puis-je remplacer une propriété d'une classe dont je ne peux pas hériter?
- 22. contenu remplacer la fonction
- 23. Comment rendre un contrôle personnalisé hériter son style de son parent?
- 24. Ressource Ressource un fichier ou un répertoire?
- 25. comment remplacer $ block-> contenu dans drupal?
- 26. Comment puis-je savoir si un fichier est un txt ou un binaire utilisant son contenu?
- 27. Comment puis-je hériter du résumé de C# dans une autre classe? (Comme héritant Javadoc)
- 28. Comment remplacer dynamiquement du contenu dans TinyMCE?
- 29. Comment puis-je (ajax) changer le contenu d'un div en fonction de son contenu actuel?
- 30. Comment puis-je attendre un iframe pour recharger son contenu?
Êtes-vous les ressources être accédé directement à partir de classes de ressources générées automatiquement? Si non et que vous contrôlez la manière dont les ressources sont utilisées, vous pouvez implémenter des propriétés virtuelles, lues à partir de la ressource, puis les remplacer dans vos sous-classes. –
Je ne peux pas contrôler la façon dont les ressources sont utilisées. Ils sont simplement appelés en utilisant My.Resources.XXXXXXX dans le projet BASE. Je pourrais être en mesure de changer le projet de base, mais je préfère ne pas. Je préfère remplacer en quelque sorte ce que My.Resources.XXXXXXX évalue. – Denis
Hmmmm ... le problème est qu'à la fin des ressources identifiées avec nom qualifié complet, y compris le nom de l'assembly. Et ils ne suivent aucun modèle d'héritage. Vous pouvez changer le fichier de ressources avec System.Resources.ResourceManager mais à mon avis, les ressources ne peuvent pas être partiellement remplacées comme les propriétés virtuelles. –