C
C#2y ago
WarChortle

Looking for feedback on a plugin system, Specifically how each Plugin can define things for the app

I have an app that I am working on to make doing things at work quicker. I work with various AWS services and internal services and I wanted a simple front end to sped up minor things. Think Postman but not just http requests. I have a page you can add that lets you send messages to an SQS queue, I have a page that monitors GitHub Actions for a branch. Right now they are baked into the app, but I want to migrate to a plugin system eventually, so I am trying to figure out a way to make each view/viewmodel self sufficient. I am trying to define a common interface(s) for all these unrelated viewmodels for a few things things. 1. What to display in the Treeview. 2. What to display in a CardView. 3. How to define any inputs needed For the Treeview all views inherit from IDisplayableView which defines one property called Name, That is used by the treeview as what to click on An Example would be "MyQueue". For the CardView I have a custom class attribute called DisplayableAttribute it takes in 2 strings a Name (example SQS) so a generic name for the view and a string that is used to lookup images in a large nuget package. This creates a card. Lastly I am not sure on the best method to define what input a class needs. Each Class Needs at least a User Defined Name but might need more. SQS needs a URL, Github needs a branch name(soon to need repo name as well). The idea being that the Core app would load a plugin and when a user wanted to add that to the treeview it would generate a prompt asking for the input before passing it to the viewmodel. I was thinking tagging each property that the user needs to define with an InputAttribute or just having each view handle its own input in whatever way it deems, but I would like more consistency. I wanted to see what other ideas people had or thoughts on what I have so far.
1 Reply
Accord
Accord2y ago
Looks like nothing has happened here. I will mark this as stale and this post will be archived until there is new activity.
Want results from more Discord servers?
Add your server