Cleanly Deal With Different Behavior Based On Polymorphism?
Mar 24, 2011
Suppose I have an interface IFoo with implementation classes VideoFoo, AudioFoo, and TextFoo. Suppose further that I cannot modify any of that code. Suppose that I would then like to write a function that acts differently based on the runtime type of IFoo, such as
[Code]...
Then I have to do my "If TypeOf ... Is" again. How can I refactor this to take advantage of the polymorphism of the implementations of IFoo without manually checking the types? (in VB.NET, though my question applies to C# too)
I'm trying to close down a program from within the constructor for the main form. I've tried Me.Close() but this gives an error: ObjectDisposedException was unhandled. Here's the details:
System.ObjectDisposedException was unhandled Message=Cannot access a disposed object. Object name: 'Form1'.
You can install certificate into certificate store using Wizard in certmgr.msc (Right click install)? Does anyone knows how to "cleanly" remove all the certificate by either using wizard/Code (pref.) /Script ?
I want to be able to remove everything (that I have installed earlier) from the LocalMachine and/or CurrentUser Store without leaving any residue.
I've got a serial port handler which all works fine:
Port = New System.IO.Ports.SerialPort(MyProperties.ComPort, MyProperties.BaudRate, Parity.None, 8, StopBits.One) Port.Open() AddHandler Port.DataReceived, AddressOf port_DataReceived
[code]....
Until I try and close the port (Port.Close()) and the app when I get this error:28/09/2010 08:25:57 ERROR:[port_DataReceived] The I/O operation has been aborted because of either a thread exit or an application request.How do I stop it cleanly?
I noticed that when the app closed the icon remained on the taskbar until the mouse was hovered over it, so added this:- If Not AlarmClockNotify Is Nothing Then AlarmClockNotify.Dispose() End If .. and that did the job.
Then I noticed that if the balloon was showing at the time the app was closed, the icon went - but the balloon stayed, so added this:- If Not AlarmClockNotify Is Nothing Then AlarmClockNotify.Visible = False AlarmClockNotify.Visible = True AlarmClockNotify.Dispose() End If
and everything worked fine until the app was closed WITHOUT the icon showing (only dislays if an alarm is pending in the next x days) - then it throws and 'object reference not set to an instance of an object' - odd because it passed straight through the 'not is nothing' If statement.
Hi. I have 2 toolbars and want to show only one at a time.
But when I swap them using .visible, it updates the form each time I switch one on/off, so it's all flickery and slow, and other controls resize to suit the indermediate state.
I have a function called Modify. It is delcared like so:Public Function Modify(Of SIMType As {New, DAOBase})(ByVal obj As DAOBase) As Boolean
You can see that this function is generic. It takes as a paramer a object that is a DAOBase or subclasses of DAOBase.Inside the modify function there is a call like so:
DAOToGP(obj)This is where the polymorphism comes into play. There are four or so subclasses I have created of DAOBase. I have written a DAOToGP() for each of these types. So in the Modify() function, when it calls the DAOToGP(obj), polymorphism should kick in and it should call the correct implementation of DAOToGP() depending on the type that I pass into Modify().
However, I get the following error:Error 20 Overload resolution failed because no accessible 'DAOToGP' can be called without a narrowing conversion:'Public Shared Function DAOToGP(distributor As Distributors) As Microsoft.Dynamics.GP.Vendor': Argument matching parameter 'distributor' narrows from 'SierraLib.DAOBase' to 'IMS.Distributors'.'Public Shared Function DAOToGP(product As Products) As Microsoft.Dynamics.GP.SalesItem': Argument matching parameter 'product' narrows from 'SierraLib.DAOBase' to 'IMS.Products'. C:Usersdvargo.SIERRAWOWIRESDocumentsVisual Studio 2010ProjectsSIMDev_2SIMIMSDVSIMLibGPGPSIMRunnerRunnersRunnerBase.vb 66 39 IMS
I am kind of at a loss here. I am not sure why it cant figure out which function to call.
Okay this is a bit of a noobish question, but I ran across this today and it somewhat puzzles me WHY it would be this way.
Consider the following structure
Public Class Employee Implements IPerson Private _MyManager As Manager
[Code].....
Here is my question: I am wanting to have every person implement the IPerson interface, whether they are an employee, boss, or manager. However, they each have an attribute that refers to their leader (employees have a manager, managers have a boss, etc). Each implementation of their leader could be potentially differnt other than they fact that they implement the IAuthorityFigure interface. I am wanting to have the IPerson interface have a property for the IAuthorityFigure, but it throws a compiler error for me when I implement this b/c the IAuthorityFigure is not the same type as Boss or Manager (even though they implement the interface).
i have assignment which using polymorphism to get answer. Below here is answer from the question.anyone give me a code using polymorphism to get this answer
i= 100, j= 200, k= 300 value for i =100 value for(i+j)/2= 150 value for(i+j+k)/3 =200
I have a class that has two methods called "Add." One method excepts a FileInfoA object and the other excepts a DirectoryInfoA objectSo in my code, I'm adding FIAs and DIAs to property lists. But, it throws an exception because it's trying to process a FIA as a DIA, which means that the FIA is being added to the group of DIAs.I commented out the adding of DIAs to see if it would work and it did. When the DIA is commented out, the FIAs are filtered properly and the code executes properly.This is how my methods are declared:
VB.NET ''' <summary> ''' Adds a DirectoryInfoA class and adds it to one of the appropriate list. ''' </summary> ''' <param name="di">DirectoryInfo</param> '''
I wasn't quite sure how to label this but that should cover it all. I am using Linq to Sql classes to query a SQL Server table. That part is working fine. I'd like to add the records to a listbox and not just text. I can do this and it works. To get it to display something meaningful in the listbox, I have to override the ToString() function.
So, I've taken the base class tblVendor and created a new sub class tblVendorListObject that inherits tblVendor and overrides ToString to return Me.vendorName. I then use a foreach loop to iterate through the records returned by the query. Next, I create a new instance of tblVendorListObject and attempt to assign the current item in the foreach loop to it.
I have a couple of small classes to represent parts in a search filter. If the searched value equals NonValue the filter is supposed to do nothing. This is defined in a Base Class:
Private Class BaseFilter Protected NonValue As Object Protected sQueryStringBase As String = "AND {0} {1} {2} "[code]......
When I then create a StringFilter and check for allowed value:
Dim stf As New StringFilter() stf.CheckNonValue(MyString)
I get a NullReferenceException (NonValue = Nothing) , when I expected the NonValue object to be String.Empty. Is this a bug in my code, or am I trying to achieve polymorphism in a wrong way?
In VB.NET, say I have a function Public Function Foo(ByVal currentShape as Shape) Instead up passing in a Shape object, I pass in a subclass of Shape called Square like such: Dim square As Square = new Square() Foo(square). Do I need to convert my Square object to a Shape object before passing it in? If so, how do I do this?
In a program I am writing (in VB.NET, 2008), I have 2 classes, "Receipt" and "Group", each with similar properties, both implementing a custom interface entitled "IIDUser". In my program, I have a number of lists of "Receipt" and "Group", declared like:Friend receipts as List(Of Receipt)
I have written a few functions that apply equally to managing both lists of receipts and groups, declared like this one:Friend Function getNextAvailableUserLabel(ByRef theList As IList(Of IIDUser), ByVal startLabel As Short) As Short
Then called like this:getNextAvailableUserLabel(receipts, s)
I did all this in an attempt for interface-based polymorphism, as I thought writing 2 identical functions (except for that one would be for lists of receipts while the other for lists of groups) would be bad practice (and waste time). However, I get an "InvalidCastException" during runtime. It is explained, "Unable to cast object of type 'System.Collections.Generic.List`1[Receipt_Sorter_v2.Receipt]' to
I'm trying to create a class for storing data on People with another class to store their Bank Transactions.Ideally, this all be hidden away and leave only simple statments, declarations and functions available to the programmer.[code]I know this is possible as these exist in the Listbox Class though can't figure out how it's done.
I am using VB 2005 and MS Access 2007.Some of business name has apostrophe(') and I need to know how SQL deal with this name.For example
sqlStr = "SELECT * FROM AddressTable WHERE BusinessName=" & "'" & updateBName & "'" in this case, if updateBName is "Den's Nail", the real SQL is "SELECT * FROM AddressChangeTable WHERE BusinessName='Den's Nail'"
and this code generates Error Message.Is there any way to prevent error ?Or do I have to remove all apostrophe(') in Business Name?
slno Name Age City 1 Ron 22 Dallas 2 Jonny 26 Texas
Now i use the following method to access data:
Try Using connection As New SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=E:Visual Studio 2008ProjectsSmart SyncronixSmart SyncronixSmartDB.mdf;Integrated Security=True;User Instance=True")
TabControl1. It is the only control that is created in design time. My text editor is a tabbed program. I have a addtab() function that whenever teh user clicks the toolstrip addtab, the tabcontrol adds tabs. THe code below is for the addtab()
Private Sub AddTab(Optional ByVal file As String = Nothing) NewRTB.AllowDrop = True NewTab.AllowDrop = True
My app is basically talking to a device via RS232. I need to 'listen' to the data received and do certain things based on it, update labels, etc. When I started, I only had a couple cross-thread calls and I used JMC's example to get by that. Now my app is bigger and I am calling the ThreadProcSafe all the time. I am hoping there is an easier way so I don't have to create sub routines for every control. Here's the relevant parts of my code.
Private Sub StepperSerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles StepperSerialPort.DataReceived Dim ReceiveBuffer As String
I've recently been given the task of finishing an incomplete project for my University. It'll count as credit for one Class so I'll shave a month off of my studies!
[Code]...
Methods returning numbers just for the hell of it, passwords being saved in plaintext, you name it.
I have a meeting with the original author and I don't know how to handle this situation because I'm quite green in this area. How can I tactfully mention that I want to rewrite the whole thing?
I was trying to add two quantities at different rows of same description i.e same product_name and same item_pack.1st I want to check the table if it contains the same description or not by comparing with the first record and so on. When found, I'll add up the quantities and then to delete that particular row (to avoid duplicate search). But when I delete the row the particular row, next time it throws an out of index exception
I've received a text file in which the text is like this, ãYAHOO.COM. When I'm debugging in Visual Studio, the value I see for the character is "�"c. Firstly can anyone tell what is the character before yahoo. Is it a special character or some html character, and what is the character that I'm seeing in VS while debugging.So it goes like this, the ascii value of the character turns out to be 63.But when I write the value to a file it generates 3 characters whose ascii values are above 127.
I am creating a VB.Net program to deal out five random playing cards.For that purpose i checked the following tutorial - [URL]..It works great. But It has too much functionality I just want to get rid of the unwanted code to just dealing out 5 random cards. functions and classes from thius program that I should use.
I've been trying to improve the efficiency of my giant program and I know that using a textbox to deal with a string is terribly inefficient. Function CollectionSplit(ByVal TheString As String, ByVal TheSeperator As String) Dim tb As New TextBox tb.Text = TheString.Replace(TheSeperator, Environment.NewLine) Dim returnable As New Collection For Each x As String In tb.Lines If Not x.Length = 0 Then returnable.Add(x) Next Return returnable End Function What it does is convert a string of "1,2,3" into a collection of the 3 separate items for use later on.
I am trying to write a VB .NET program that runs a Perl script and reads and uses the standard output. I'd like to be able to handle each line separately as it is printed, and update my program display accordingly. Here's some code I have "written" (read: "mostly copied off the internet"):
Private WithEvents pscript As Process Private Sub myProgram_Load(sender As Object, e As System.EventArgs) Handles Me.Load pscript = New Process()
[Code]....
This works with one problem: the program waits until the test script has run to completion, and then fires several OutputDataReceived events one after the other. This means that when I make it use the real script, it's likely to do nothing for as much as several hours, and then have to deal with, like, 5,000 events at once, despite the fact that stuff was being printed at fairly regular intervals throughout that time.
Is there any way I can make it deal with each line of text when it is written, instead of all of it at once at the end?