Pass A Structure Through An Interface To A Plugin?
May 26, 2010
I'm working on a project where I'm experimenting with building and implementing plugins. I have a structure called "sensor" in the plugin that contains several elements. I would like to be able to return that structure to my main program through the interface, but it doesn't work. The plugin works fine if I'm passing strings or other variable types, but when I switch from strings to my structure, I get a couple of errors. On my main form where I try to call the function, I get the error 'value of type iMyPlugin.sensor cannot be converted to frmMain.sensor'. In the plugin code, I get the error 'GetSensorReading cannot implement GetSensorReading because there is no matching function on the interface'. Is what I want to do possible, or is there a better way to do what I want?
in the codebase i'm maintaining there is an old interface. Let's call it IFoo. It pretty much became obsolete and replaced with the Interface INewFoo with a change a few weeks ago, but for backwards-compatibility purposes, i wrote a wrapper class which implements INewFoo and takes an IFoo in the constructor.To clarify, consider the following code.
Public Interface IFoo Sub DoStuff() End Interface[code].....
For both interfaces, the implementations are loaded by scanning a few assemblies with StructureMap. Now, let's get to the bad things. Most implementations for the old interface were put into forms for reason i can neither understand nor change. Because those tend to be displayed and disposed, i have to create a new instance every time i use ObjectFactory.GetAllInstances(Of IFoo). Thats still no problem, but i'd like to register a INewFoo-Wrapper for each registered implementation of IFoo, so that i can just use ObjectFactory.GetAllInstances(of INewFoo) and get all implementations of IFoo AND INewFoo.I can't iterate through the implementations of IFoo and register a wrapper for each one because as far as i can see, you can just register those with instances.Wrong code below:
ObjectFactory.Configure(Sub(config) config.Scan(Sub(scan) For Each ass In assemblies[code].....
My question is: Is it possible to register a wrapper for each implementation of IFoo which always creates a new instance of the implementation before creating a new instance of the wrapper?
Strategy on how to structure a VB.net GUI app. I have a application that is basically an interface to a database. It is comprised of a TabControl with 6 tabs, each tab has a few custom controls and performs a business operation on the database.
Tab Functions:
CODE:
Common Code Functions:
CODE:
Currently I've got most all of the operations built into event handler functions on the GUI thread. I'd like to move to a more object-oriented structure for code reusability and easier multi-threading.
I'm struggling with a few design things:
What objects / classes makes sense? Are there industry-standard best practices or design patterns around separating GUI and backend functionality? Any particularly good articles I should read? Is BackgroundWorker the best way to execute the backend functions?
I'm trying to implement a grid based RPG style inventory (teaching myself by making a game keeps me focused ) and I have an array of "item" objects. Part of this array is a picture box, which I then lay out in code to display the inventory. how to detect when one of these picture boxes is clicked. However, I'm having a little trouble getting my head around the Directcast command.
When a box is clicked, I would like the function 'boardclicked' to pass over not only the picture box, but the whole object it is associated with it, so I can print these values out the screen (detailing the objects name, value etc) [Code]. As you can see, this passes the picture box element of the object, but I'd like to be able to pass the whole structure, so I can retrieve the other associated values.
I'm creating a Data Layer for a Web Application and in one of my functions, I need to pass in a Structure full of Customer info. This Data Layer is essentially a DLL. My problem is that I'm not sure how to do this.Below is my code and what I want to do.
am trying to pass a structure that contains 2D arrays as Byte from VB.net to a C++ dll. The dll returns the structure with the 1D arrays filled. I am using UnmanagedType.ByValArray to pass the arrays from VB.net to C++.
I have a structure to hold a student name, an array to hold 5 test scores, and an average score. I have created an a array of structures for 6 students. User input is setup through text boxes. I want to calculate the average for each student. I have made a function to do this. What I am having trouble with is how to pass the array of test scores to the function.
Here is what I have so far:
CODE******** Public Const intMAX_STUDENTS As Integer = 6 Public Const intMAX_NUMTESTS As Integer = 5 Public student(intMAX_STUDENTS - 1) As StudentData
I'm trying to serialize a data structure and pass it to another report via parameter, and this line of code:
Dim s As New System.Xml.Serialization.XmlSerializer(GetType(System.Collections.HashTable))
Produces this error:
An error occurred during local report processing. The definition of the report '/myReport' is invalid. There is an error on line 22 of custom code: [BC30002] Type 'System.Xml.Serialization.XmlSerializer' is not defined.
How can I get around this? I have been able to use fully defined .NET classes in other lines of code, including the following:
Dim outStream As New System.IO.StringWriter()
and
Private colorMapping As New System.Collections.Hashtable()
I am running into a problem which I am using C Dll into my VB.net code. I have .H file which shows implementation of this DLL in C language.This .H file contains many structures and unions that contain variable of some structures type. There is a main structure which contains the pointers to these structures and unions and finally address of main structure is passed into the dll function.
I am enable to figure out how to create structures and unions with marshalling in vb.net and how to pass address of a structure which contains addresses of othere structures and unions.
MsgBox(AddSomething(Of String)("Hello", "World")) Public Function AddSomething(Of T)(ByVal FirstValue As T, ByVal SecondValue As T) As String Return FirstValue.ToString + SecondValue.ToString
Module Module1 Public Structure structure1 Public TRANS() As structure2 End Structure Public Structure structure2 Public X() As Integer End Structure End Module
I'm new to VB 2008 after having spent a long time with VB6, so I apologize if this is a stupid question. But I'd really like to have this straightened out.
Let's say I have a pretty large structure that has lots of properties.
Code:
Now say that I want an internal database with about 10 instances of this structure total, describing, say, 10 different products that a store sells. When these values are loaded from a database, they remain totally static. (However, they can be different each time a program loads)
Now say that I have a class. Each instance of this class is a type of that BaseProduct structure. Meaning, each instance of the class pertains to one of the 10 types of products that the store sells. However, this class has additional properties that pertain specifically to each instance, which are not static.
Code:
Now, the problem here is... If I have 200 different transactions, each one contains an instance of BaseProduct. BaseProduct is HUGE, and is largely redundant (only 10 types possible), so I think it's a little silly to include a whole copy of it with EVERY transaction. However, the Transaction class really needs information regarding the base product it pertains to. Is there a way to, instead of declaring a New BaseProduct in the Transaction class, to simply make one of the properties of the Transaction class a pointer to a BaseProduct variable?
In VB6, I would accomplish this by making a BaseProduct(10) array, and then giving each Transaction an ID number referring to an entry in that array. But in VB 2008, using class structure, this is impossible. I can't define the BaseProduct(10) array outside of a class in a namespace, and if I define it in the actual application's form, then the class loses modularity since it relies on the application that's using it.
I am trying to communicate with an external device and i am trying to send a byte array to the external device via sockets but i am always getting a response the message size is too small so i am not sure what i have done wrong. Between the data type there should be no alignment present and all numbers are represented in little endian format. The char array is not null terminated as mentioned in the protocol specifications.
I have to send data based on a struct that embeds 2 other struct. So here's my vb.net code for the struct used to convert to byte array and the sending part.
Public Structure MESSAGETYPE_OIP_Login Dim Header() As COMMANDHEADER Dim UserName() As PSTRING
I'm having a problem that's driving me crazy; I can't understand how to convert the XML structure into a class structure (that I want to use to hydrate a XML document).
The XML document looks like this:
xml <?xml version="1.0" encoding="utf-8"?> <artists xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.spotify.com/ns/music/1">
I am working on a migration project to convert a Visual Basic 6 system to a new platform. To make life easier for the programmers I would like to develop some plug-ins for the Microsoft Visual Basic 6 IDE. But until now I've found only information about using vb6 to write plug-ins for other programs. how to create a plug-in for the Microsoft Visual Basic 6 IDE (SP6)?
Is there a significant enough difference with .NET from regular native code to maketraditional plugin systems not very useful? Either way, there must be some system for making a program extensible after it is compiled. To allow third party development withoureleasing the source code. Anyone have info on this? I said .NET, but of course specifically I mean Visual Basic
I've got a C#.NET background and due to circumstances I'm trying to make a plugin written in VB.NET. I've created a new class project which gives me a DLL. This class implements a C# interface which all works.My only question is this... In my C# code I've got an implemented DLL (which loads at runtime) with the following declaration before the class...
[Plugin(PluginType.Storage)] public class XmlPlugin<T> : IStoragePlugin<T> {
[code]....
How do I write [Plugin(PluginType.Storage)] in VB syntax?
Ive created an application that reads plugins but I can't figure out a way of making a form thats housed in the plugin into an MDI for my existing application.[code]...
I've been reading a lot of the posts but i just can't seem to get mine to work,What am i suppose to fill in under Server Name? i'm using my godaddy's free hosting account's mysql but i can't seem to find any thing that'll teach me how to use that exactly it just keep saying 'unable to connect to any of the specified mysql hosts' am i filling in something wrongly?
I need to write an app that that will iterate over our database, and perform various anaylsis on each record. In order to do this (partially for the learning exercise in creating plugin support) I want to use a Plugin model.
Currently, I have a simple Interface in my main app, which plugins can Implement. My app then loads all DLL's in a folder looking for ones implementing the Interface.
As you can see in the pseudo-code below, I have to keep performing a loop through all loaded plugins calling the process methods.
Sub ProcessData() For Each Record In MyDataSet For Each Plugin In MyPluginCollection
I am trying to make a plugin system in vb.net and i am using interfaces to do that. I have managed to implement the plugins but now i am having problems with setting the plugins in a dictionary or some sort of array.
The system is simple. I have the main application and i have plugins. The application needs 2 mandatory plugins and that is data and authentication. Other plugins are free to use so i have 3 interfaces. Data, Authentication and CustomPlugins.
I load the plugins with this
CODE:
It works fine like this but i want to make a collection of plugins because i don't know how many plugins the customer make. So initially i thought to make a collection
CODE:
But that doesn't work. The main focus is to load as many plugins as i like but have then in some sort of array. A dictionary would be perfect but is not a must.
i want to implement in a program. I'm not asking for code just some advice and maybe a link or 3 to useful pages on the internet.I want to create a plugin system for an application that i want to make. The idea for the plugin system is based on the following...
1-Some graphics editing programs have what i think is called a filter/effects chain. its where you make a list of filters and settings that the program runs to edit the image.
2-In yahoo pipes you take small parts and use them to complete tasks for you mashup (like pulling all the images returned in a search and displaying them).
The system i want advice on is basically a plugin chain system modeled after these 2 idea's where the user selects plugin's and forms a chain out of them.for instance if i wanted to display a picture then i would form a chain of plugins like this
legend:[(inputs)what it does(outputs)]
[show open dialog plugin(output filepath)] -> [(filepath input)open picture plugin(output bitmap object)]->[(input bitmap object)Display a picture plugin(make a form for display)]
The code for the task's will of course be in the plugin's.The problem is i have never done any plugin system before. the hardest part i need help with is getting the plugin's loaded and sending the output's to each other. Also another problem i think is that the plugin's could be for anything (parsing text, displaying a picture, opening a url, downloading a file, etc, etc)Again I'm not asking for code just advice and some useful links to information.
I have a windows form application in which I'm attempting to utilize a plugin (class library). In the code I have it load the assembly from a dll file, which means I have not been able to debug. Furthermore I have not found out how to compile the library so I've had to use the debuged dll version for testing. I've run into a bug in which I create a new object and send that data through an interface to the plugin in an attempt to retrieve a blank slate group box from the plugin. However instead of reading the parameter as a new object i managed to step through the code once (don't ask me how, I don't know and I haven't been able to repeat it) and it appeared that the code was registering the parameter as "nothing" thus why I received a null reference error in the main program.