Convert From Base Class To Subclass (BC30311: "Value Of Type '<type1>' Cannot Be Converted To '<type2>'")
Nov 16, 2009take a look at the following code:
[Code]...
take a look at the following code:
[Code]...
I have a copy function that I'd like to override in subclasses to return the type of the subclass. Here are my interfaces:
Public Interface IBase(Of T)
Function Copy() As T
End Interface
[Code]....
In Visual Studio 2008 vb.net i have created a windows forms application containing 2 web references: wr1 and wr2.
wr1 contains a public class "Person" and wr2 also contains a public class "Person". They both have exactly the same properties.
What i would like to achieve is to convert an object of type wr1.person to wr2.person. Something like this:
dim p1 as wr1.person
p1 = wr1.GetPerson(123)
dim p2 as wr2.person
p2 = p1
wr2.AddPerson(p2)
In re-engineering a windows forms application, I find that a lot of code-behind in the various form classes is duplicative and I'm trying to centralize as many procedures as possible into a base class which can be inherited and used by the subclassed forms.
This process seems to be going well and is making the code in my subclasses much simpler and hopefully easier to maintain, but I'm not sure where to draw the line between leaving code in the subclasses and engineering for generic resusability and moving it to the base class.
Specifically, in some subclasses I have code which manipulates variables and objects specific to the subclass, and although I could move the code-behind into the base class, the base class code references specific objects which are needed to compile. For example, each subclass manipulates a databound datagridview and form detail controls which allows the user to select between multi-record and detailed single-record views of a datatable.
In Visual Basic 2008 do I need to declare dummy data objects in the base class so that the base class will compile? Or is there a way to indicate that the data objects will be provided by the subclass?
I suspect I am being very silly here but I have the following setup
Class MustInherit myBaseClass
'some stuff
End Class
Class myInheritedClassA
[code]....
Running this results in the following error
Unhandled Exception: System.InvalidOperationException:
There was an error generating the XML document. --->
System.InvalidOperationException:
[code]....
is there any way of 'Widening' the inherited class to the base class so this would work?
EDIT:regarding XmlInclude(typeof inheritedClass), currently this method could potentially return a number of types of inherited class (i.e myInheritedClassA and myInheritedClassB) is it case of simply having to add each of the inheritedTypes in this tag?
1) VB Allows non-type template parameters2) VB supports explicit specialization 3) VB allows the type parameters to be used as the base class for the generic type4) VB allows a generic type parameter itself to to be a generic 5) VB enforces that all codes are valid for all types of parametrs
View 1 RepliesI understand that inherited classes can't be converted from base classes. But is there any way to write a conversion sub, so that the base class gets assigned to MyBase, then extra properties are added?[code]...
View 7 RepliesOne thing that always bugged me, is that I do not see the base type in Visual Studio.I just stumbled on this, because I tried to cast a System. Windows.Forms.MenuItem to a System.Windows.Forms.Control..In eclipse the "intellisense" (or whatever it is called) shows me while exploring the members of a class for each member from which base class it is inherited.In Visual Studio I cannot see the base class, even if I use the Object browser or the help.[code]Is there a way to query the base type tree of a class at Design Time?
View 8 RepliesHas any one used BITs in VB.NET? If so, do you have code samples? I was looking at SharpBits but I have a VB project that I wanted to use BITS for. Is it possible to use it with my VB.NET program? (.NET 2.0) I was tempted to try to convert each class to VB.NET in the SharpBits.Base folder but figured I'd ask in case someone has headed down this route before.
In case you run across this question. What you can do is in the Sharpbits.Base folder (that you download from codeplex) there is a DLL you can reference in the Bin directory. You can add that into your references to access it. Marking Konrad as answer since he was kind enough to post.
I managed to get sharpbits working with some quick code which I pasted below for anyone who might stumble upon this question. Like I mentioned above add the DLL to your project.
Dim b As New SharpBits.Base.BitsManager
Dim mynewjob As SharpBits.Base.BitsJob = _
b.CreateJob("jobname", SharpBits.Base.JobType.Download)
mynewjob.AddFile("\servershareigfile.zip", "c:igfile.zip")
mynewjob.Resume()
You'll need to write some logic to check for the status of the job. Once it hits "Transferred" status you can then mark it as complete. This will write the file from a .bin to the file name you listed. Something that helped me was installing the Windows Support Tools (you can get it from a Windows 2003 Cd/DVD in the sup tools folder)and using Bitsadmin.exe to view the status of the job while debugging.
Sorry if the title isn't very clear. This is a VB.NET (2010) question I have a superclass called "Device" which has a number of subclasses that inherit it. Some of those subclasses also have subclasses. In particular, I have a class called "TwinCatIntegerDevice" which inherits "TwinCatDevice" which inherits "Device."The relevant parts of Device look like this:
[Code]...
I am trying to override a property of a subclass of an inherited base class. I've tried to simplify this code as much as possible but am not comfortable enough with my own abilities to simplify anything else without loosing the ability to understand an answer.The property propertyName in the otherClass is currently incorrect. I want to be able to override propertyName in baseClass with the propertyName in otherClass. Is this possible to accomplish?
Public Interface interfaceName
Interface iInterfacePropertyName
Enum enumName
[code].....
Consider:
Public MustInherit Class Column
Public ReadOnly Property ReturnSomethingUseful() As Object
Get
'return something useful
[code]....
But this gives the following error:
Public Overrides Function ParseValue(sValue As String) As Boolean'
cannot override 'Public Overridable Function ParseValue(sValue As String) As Object'
because they differ by their return types.
I accept that you can't do this, but I'd like to be able to preserve the semantics of what I'm. trying to do, which is to have an untyped version that deals with Object, but a typed version in derived classes that knows about the specific type T.
When I do this
Public Class cInherits : Inherits Panel
I get this: Base class 'System.Windows.Forms.Panel' specified for class 'MenuButton' cannot be different from the base class 'System.Windows.Forms.UserControl' of one of its other partial types.
How do I inherit?
I have put this code in the global form Inherits System.Windows.Forms.Form. And then in the form that will inherit this from the global Inherits MenuStrip. "MenuStrip" is what the global form is called. But keep getting this error: Error1Base class 'MenuStrip' specified for class 'Lesson2' cannot be different from the base class 'System.Windows.Forms.Form' of one of its other partial types.
View 5 RepliesValue of type 'System.Func(Of String, String)' cannot be converted to 'System.Converter(Of String, String)
Why? They are both effectively a function pointer (or delegate?) to a function that accept a string and return a string.
I have a number of controls (Device1, Device2, etc.) that all inherit from BaseDeviceControl. In the DragEnter event handler I am trying to test for the correct type by using the BaseDevvceControl like this....
[Code]....
I've been creating short test apps repeatedly to try to understand some of the concepts in VB.NET.For the most part it has been illuminating.I read Bucky's .NET knowlegebase tutorial on passing objects as parameters to newly created forms. He shows how to create a new class that inherits from the base form class and define a New() method with parameters Extending the concept I thought about doing the same thing with a form that was created at design-time (In this case Form2).
[Code]...
Base class has one field to hold numeric balance value. With 2 methods that accept arguments for adding and subtracting the new input calculating new balance. Sub class has four fields dates, transaction, memo and amount.I have a deposit form, and withdraw form. Each time one transaction is entered it creates an object with sub class fields, then adds to the account collection. My problem is not understanding how to call the deposit/withdraw method and pass the current transaction amount back to the base class to alculate the new balance. Does anyone have any links to information/tutorials on how to perform something like this? As you can see with my code I have tried various different approaches without any success.
[Code]...
Supose a base class
Public Class airplane
Private var_num_seats As Integer
Private var_num_engines As Integer
[code]....
Obviously, I don't wish that the class Glider has the method "start_engines" neither the property "num_engines". Otherwise, other child classes may have. How can I supress these property and method in child class, not just ignoring (if I can)?
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]...
This is another one of my "I think it's not possible but I need confirmation" questions.I have a base class for a bunch of child classes. Right now, this base class has a few common properties the children use, like Name. The base is an abstract class (MustInherit)Technically, this means that everytime a child class is instantiated, it lugs around, in memory, its own copy of Name. The thing is, Name is going to be a fixed value for all instances of a given child. I.e., Child1.Name will return "child_object1", and Child2.Name will return "child_object2".
View 1 RepliesSuppose I have piece of code like this:
Public Interface ISomething
....
End Interface
[code]....
I'm wrestling with this treeview control. I have extended the TreeNode class to attach some extra data to the node. Basically, I added one property:[code]Is there a way to cast from a base type to a derived type?
View 11 RepliesHow do I access the base class inside a derived class?
View 1 RepliesIf 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 .
Public Class Base
Public x As String
End Class
[code]....
Actually there is error in ReadOnly Property BaseReference's Getter . Error is "Error 1 'MyBase' must be followed by '.' and an identifier. " how can i get base class object reference in Main method ?
Specifically I have fractal hour... in base 100... that does not reflect what the true minutes/seconds left that it represents
View 2 Replies[code]The reason that this is a problem is that this is a collection of EventBase objects, but I'm trying to populate it with child classes instead. For example, I might have a JumpEvent class that inherits EventBase, and this is being put into the EventBaseCollection. That means that value.GetType() returns the type of JumpEvent, which as you might guess does not equal the type of EventBase.The goal of course is to simply loop through all of the various events without having to know anything about the sub-classes. Is there a way to determine the type of the base class so that the OnValidate call will work? Or is this just the wrong way to go about it altogether?
View 2 RepliesI am trying to make it so when I use Me.Controls("Timer1") for example I can access specific commands for a timer such as Stop() Start(), I tried CType() and typed in "Timer" as the type but it says the control type can't be converted to the "Timer" type.
View 11 RepliesIf i have 2 variables, how can I check if the first one can be converted to the second's one type or not?
View 24 RepliesI used site to convert from C# to VB but converted code doesn't work. Can some one to convert that code to VB 2008.
private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
{
ExpandToItem(sender as TreeViewItem);
}
void ExpandToItem(TreeViewItem i)
[Code]...