Storing An Object That Implements Multiple Interfaces And Derives From A Certain Base (.net)
Dec 7, 2010
In .net, it's possible to use generics so that a function can accept arguments which support one or more interfaces and derive from a base type, even if there does not exist any single type from which all valid argument types derive. For example, one could say: Sub Foo(Of T As {IInterface1, IInterface2, SomeBaseType})(Param as T) And be allowed to pass any derivative of SomeBaseType which implements both IInterface1 and IInterface2. This will work even if SomeBaseType does not support Interface1 and Interface2, and classes which do implement those interfaces don't share any common ancestor that also implements them. This can be very convenient if one won't need to keep the parameter anywhere after the function has exited. Unfortunately, I can't figure out a way to persist the passed-in parameter in such a way that it can later be passed to a similar function, except perhaps by using Reflection. Is there any nice way of doing that?
The closest I've been able to come up with is to define an interface INest (perhaps not the best name-- thus:
Interface INest(Of Out T)
Function Nest() As T
End Interface
And for any interface that will be used in combination with others or with base-class "constraint", define a generic version as illustrated below:
Interface IFun1
' Any members of the interface go here, e.g. ...'
Sub DoFun1()
[CODE]...
A class which will support multiple interfaces should declare itself as implementing the generic ones, with itself as the type argument.
Class test123a
Inherits sampleBase
Implements IFun1(Of test123a), IFun2(Of test123a), IFun3(Of test123a)
End Class
If that is done, one can define a function argument or class variable that supports multiple constraints thusly: Dim SomeField as IFun1(Of IFun2(Of IFun3(Of sampleBase)))
And then assign to it any class derived from sampleBase, which implements those interfaces. SomeField will implement IFun1; SomeField.Nest will implement IFun2; SomeField.Nest.Nest will implement IFun3. Note that there's no requirement that IFun1, IFun2, IFun3, or sampleBase share any common derivation other than the generic interfaces inheriting from INest(Of T). Note also that, no matter how many INest-derived interfaces a class implements, it only needs to define one implementation of INest(Of T).Nest. Not exactly beautiful, but there are two nice things about it: (1) any concrete class which in fact implements the necessary interfaces can be assigned directly to a field declared as above, without a typecast; (2) while fields which chain the types in a different order are not assignment compatible, they may be typecast to each other. Is there any better way to store something in such a way that it's "known" to support multiple interfaces and derive from a certain base type? Given that one can write such code in a type-safe manner, it would seem like the .net 2.0 CLR could probably support such a thing quite nicely if compilers offered a little assistance.
View 1 Replies
ADVERTISEMENT
Jan 24, 2012
I was looking through some legacy code we have and I noticed something that struck me as particularly odd.Say we have the concrete class TestClass. TestClass implements the interface ITestClass.What sort of behavior should I expect in the following case, then? (I didn't realize this was even possible)
Dim testClass as TestClass = Nothing
Try
testClass = New ITestClass
[code].....
View 1 Replies
Mar 23, 2010
I am wondering the best way to store an object in memory that is used in a lot of classes throughout an application. We have multiple databases, 1 per customer. We also have a master table and each row is detailed information about the databases such as database name, server IP it's located and a few config settings.
I have an application that loops through those multiple databases and runs some updates on them. The settings I mentioned above are updated each loop iteration into memory. The application then runs through series of processes that include multiple classes using this data. The data never changes during the processes, only during the loop iteration.
The variables are related to a customer, so I have them stored in a customer class. I suppose I could make all of the members shared or should I use a singleton for the customer class? I've never actually used a singleton, only read they are good in this type of situation. Are there better solutions to this type of scenario? Also, I could have plans for this application to be multithreaded later.
View 3 Replies
Apr 9, 2010
I am trying to create a class in VB.NET which inherits a base abstract class and also implements an interface. The interface declares a string property called Description. The base class contains a string property called Description. The main class inherits the base class and implements the interface. The existence of the Description property in the base class fulfills the interface requirements. This works fine in C# but causes issues in VB.NET.
[Code]...
View 5 Replies
Sep 1, 2009
I have an object parameter and I need to check if the object implements a specified interface in vb.net. How to test this?
View 2 Replies
Jul 10, 2010
I am somewhat new to object oriented programming and am attempting to flatten a Linq object hierarchy by using a shim class.how to initalize a derived class with property values from a base class?I have two objects, a base object with about 100 properties, and a derived object which inherits from the base object and adds a few additional properties beyond those of the base object. My simple constructor creates the derived object, but I am looking for a way to initialize the derived object properties with values from the base object.Right now I am using reflection to iterate over the properties individually and I suspect there may be a better way. The following example shows my shim class constructor for the derived class, and two properties:
newProperty1 - a new string property of the derived class
flattenedProperty2 - a new string property of the derived class, copied from a 2nd-level object of the base class
Code example:
Public Class derivedObj
Inherits baseObj
Private _newProperty1 As String[code].......
Is this the correct constructor approach to flatten the object hierarchy using a shim class? My second question relates to initialization of properties in the derived class. The constructor above creates the derived object, but what is the best way to initialize the derived object properties with values from the base object? The following code uses reflection to iterate over the properties individually, but I suspect there may be a better way.
Code example:
' property names are in the string array fieldNames
'baseObjQuery is an ienumerable of baseObj
'derivedObjList is a list of derivedObj[code].....
Is there a simple way to initialize values for the properties in the derived object based upon the values of the common properties in the base object?
View 7 Replies
Sep 2, 2010
I have an interface, for the sake of argument called MyInterface.I Have a Control Class, lets name it "Parent" that implements MyInterface.I have another Control Class that inherits Parent, called "Child".I have a final Control Class lets call it "Container", that accepts dragging the parent onto it.[code]I want to modify this not to only accept Parent, but to accept ANYthing that implements MyInterface. I can't figure out how the heck to get it to work. Even more confusing, if I drag the child onto Container, with the code as it is above(checking to see if a Parent was dropped), GetDataPresent always returns false. I would figure it would work, since Child inherited parent.[code]But it bombs and GetDataPresent returns false whether I dragged a Parent or a Child. I'm being an idiot somewhere..
View 1 Replies
Jun 5, 2011
I use the IsAssignableFrom-method to check if the datasource of a bindingsource-object implements an interface i defined. The check happens inside the property-setter like this:
Private WithEvents _BindingSource As BindingSource
''' <summary>
''' BindingSource containing datasource in which search is executed.
''' </summary>
''' <remarks>Datasource must implement ISearchAndFindable.</remarks>
<Description("The BindingSource to search within."), Category("Data")> _
Public Property BindingSource() As BindingSource
[Code] .....
View 4 Replies
Aug 6, 2009
Im building a game with VB.NET I designed the core of the game in form1 window But now I need menus. How can I implement this without having 5 or so windows that I show() and hide() ? Doing that slows it down a lot and uses lots of memory. I tried tabs, but I don't want the tabs to appear, just switch. Whats the best way to implement multiple interfaces?
View 1 Replies
May 19, 2009
I am working in VB.net and have a Class, Foo, that implements an interface, IBar.I have a List of Foo's, but I need to pass a list of IBar's into a function, but I keep getting casting errors, even when I use DirectCast.My code is [code]MainWorks works, but it would be really annoying and inefficient to have to do that everywhere I want to call this function.
View 4 Replies
Oct 17, 2011
how to do something that seems that it should be simple.
I tried it on a larger project I'm working on and got an error, so I reduced it to the simplest possible that I could find:
Public Interface IF1
Event WakeUp(ByVal TheObject As Object)
End Interface
[Code]....
View 3 Replies
Oct 13, 2011
I'm working on learning VB.Net after having programmed in VB6, VBA, and VBScript for several years. I'm assuming that something that begins with the letter I is an interface. However, a lot of places I see people/documentation referring to what appears to be class objects that begin with I. I guess I'm under the impression that Interfaces are contracts that class objects can agree to.
[Code]...
View 5 Replies
Oct 21, 2009
I'm dealing a problem in implementing interface for multiple class.
Assuming I have a class named Class Unu .
I created an interface called Test for those 2 classes.
The first class Unu has 2 data members(i=12 and j=12.17). When you run the program it stores the result on screen 24.17
The second class called Doi has 2 data members(a=20 and b=32.17).
What I want now is to do the same thing for data members a and b so that it stores on screen 20+32.17=52.17
My problem is that I want to be displayed also the result for the 2 data members for the second class on my screen. I implemented the interface on class Doi but I cannot see why he isn't displaying me the second result 52.17.
What I must add to my code to do that?
Here's the full code:
CODE:
View 6 Replies
Dec 15, 2011
Can any one explain the usage of interfaces to implement multiple inheritance in VB.NET.
View 6 Replies
May 12, 2010
I have two Close() functions in same class as below:
[Code]...
View 2 Replies
Jun 14, 2012
I am at a new company and I am building a wizard for a web app, (.Net/4.0). The user goes to a few separate screens during the wizard process and must return to the original screen before completion of the wizard. This is different from how they normally do this. But this is how it is TO BE DONE.
One option is to store the result of each panel in the main screen in the DB. So then, when the user leaves & redirects back. I could check for a querystring then call a datareader and populate original values appropriately.
[Code]...
View 2 Replies
Jul 25, 2010
My understanding of classes/objects is that you create a class that acts as a "template".From there you simply declare an object of that class and operate directly on that object.eg, object.methods, object.properties etc.That's my limited understanding.I've got a huge form in another project that is crying out for a decent class structure to hold references to a multitude of numbered textboxes.
View 7 Replies
May 11, 2011
The scenario is:
1)A large 2 dimensional array (400,20)
2)The program needs to access particular chunks(for example (0,20) to (50,20)
3)The program will open multiple files and process each into it's own 2D array (400,20)
What I have right now is code capable of creating the array, but no way to store the array so that I can open a new file and process that data into another large array. Someone mentioned the generics List(of T) might be a good way to store each new array as you could use the Add function. I have done some research on the List(of T) class but I'm not totally convinced that is the way to go. I'm just looking for some direction as I've just started on .net this year.
View 7 Replies
Aug 22, 2010
I'm trying to store three images from a form (PictureBox's) into a SQL Database (MSSQL2008) The below does what I want but is clearly inefficient. Any pointers on what to change to improve this?
Private Sub SaveImages()
Dim ConStr As String = "Data Source=SERVERSQL2008;Initial Catalog=NorthPole;Integrated Security=True"
[Code].....
View 1 Replies
Feb 25, 2012
My problem is storing multiple string in the my settings to clarify more on this ill try explaine as best as i can,
'I set my value like so
Dim strSettings As New My.MySettings
'On the form load i use this
Dim itemz As New ListViewItem
[Code]....
View 1 Replies
Mar 4, 2012
How can i use .filenames of a openfiledialog with a string?
[Code]....
but i get error: Error 1 Value of type '1-dimensional array of String' cannot be converted to 'String'.
View 2 Replies
Oct 16, 2009
Does link text mean I have to return a concrete implementation? Even though I am using svcutil with the /r that includes my entites(where IMyInterface is defined). I get no errors but it changes all List(of IMyInterface) to list(of Object) and I cannot deserialize it on the client
Error: list(of object) cannot be converted to list(of IMyInterface).
View 1 Replies
Feb 13, 2012
If we are within the derived class then ofcource we can use MyBase keyword to access base class's object reference . That's fine , how can we take that base class's object reference outside that derived class's definition.
My following code will explain what i want . Actually that is giving error right now, but it is explaining my requirement .[code]...
View 6 Replies
Oct 8, 2010
I have a project that has mainly two objects, both inheriting from a base. Like this:
Public Class Vehicle
Property Model As String
Property Make As String[code].....
The above function doesn't work because myVehicle is a Vehicle, not a Truck.Is there a way I can pass around a Vehicle type and have the IDE know which type to use? Or am I completely missing a better way to do this?
View 5 Replies
Jul 11, 2011
I have a VB2010 application that must run as multiple instances on the same PC (it is a controlling/monitoring program of several devices, each instance of the program control one device)
Of course, the same application must save its own setting in different place, one for each device. For example, if I start the application for the device 3, I have to save the setting in a place marked as "3", in this way, when I start the application for device 4 it will load the settings for device 4 and not 3.
Of course all labels and similar stuffs must refer the starting device: i.e. the mdi caption must report "device 4", and so on...
In vb6 I created a shortcut with a command line and made my application accepting command line parameters.
In this way I could start the application passing the device number too. For example "myapp.exe 3" start my application for the device 3.
I stored all settings in several INI file, each one for a device: setting1.ini, setting2.ini, setting3.ini, ....
I was wondering if in vb2010 would be a better way to do that.
1. How could I start multiple instances?
2. How could I store the settings?
View 4 Replies
Jun 14, 2010
If I defined a ENUM in a base object with serveral default values. When I inherit from the base object I want to add more options the the ENUM list which are specific to the inheriting object.
For example my base could have a ENUM called Direction with values:
None
ALL
Stop
Start
I create a new class call Compass which inherits the base class and what to add the following to the ENUM Direction. I create a new class call Navigation which inherits the base class and what to add the following to the ENUM Direction. So, In my inheriting class haow do I extend the ENUM.
View 1 Replies
Jun 17, 2009
Here is a test program I wrote to explore a facet of object casting ...
Module Module1
Sub Main()
Dim class1 As MyBaseClass = New MyBaseClass()
Dim class2 As MyInheritedClass = New MyInheritedClass()
Dim class3 As MyBaseClass = Nothing
[Code] .....
The problem comes with the TryCast statement on class3. My intention is that class3 remains as a baseclass, but when the TryCast is applied, class3 morphs itself into an Inherited class which is not what I wanted. So is there a gap in my OOP/VB.NET knowledge and this action is legitimate or should class3 still be regarded as a base class?
View 6 Replies
Apr 23, 2010
I have Joined two tables into a datagridview and i want users to be able to update the table values but i have this error,which is the title of this thread.Is there any alternatives of updating a joined table in datagrid view? here are my codes
Private Sub Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
con.Close()
Dim cmd1 As OleDbCommand = New OleDbCommand("SELECT LECT_NAME,LECT_ADDRESS,LECT_CONTACT,SUB_SEMESTER,SUB_ID,SUB_NAME FROM
[code]....
View 2 Replies
Feb 10, 2010
I create a string array from a bunch of files that were dropped on a control after that i use a loops to pass that data into an array of my pictureObjects object (just stores filePath info and some other things).for some reason after it's been passed to the control the "My.Computer.FileSystem.RenameFile" doesn't seem to work at all... it's a valid file name and everthing.
Dim sFileArray() As String = e.Data.GetData(DataFormats.FileDrop)
'load sFileArray into new array of picureObjects
ReDim dropedPicture(sFileArray.Length)
Dim dropedOnPictureBox As Integer[code]......
View 1 Replies
May 28, 2012
I've got a custom NumericEditor control that has a nullable Decimal property called Value. When I bind a data field to Value, I'd like to retrieve the underlying Type of the data that's bound, so that I can restrict the use of decimal places if the source field is an integral data type.I figure I'd have to do this in the BindingContextChanged event, but how do I get the Type of the data field from the binding itself? My Google-Fu is failing me at the moment.
In short, I'm looking for something like the GetValueType method mentioned in the following question: Simple databinding - How to handle bound field/property change. Winforms, .Net I imagine this method would also be handy if the Value property was an Object.
View 2 Replies