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).
Sub SomeInterfaceMember() Implements ISomeInterface.SomeInterfaceMember End Sub
while in C# you do it explicitly like this (which can only be called via the interface)...
void ISomeInterface.SomeInterfaceMember(){}
or more simply, implicitly like this...void SomeInterfaceMember(){} // Note the name matches the interface member However, regarding VB, I can also do this...
Sub SomeRandomMemberName() Implements ISomeInterface.SomeInterfaceMember End Sub
In other words, the method that handles the implementation can have a completely different name than the interface's member name.I'm just wondering if there's something similar to this in C#. (Yes, I know I can simply do an explicit interface, then access it via another 'wrapper' member with a different name that simply delegates to it, but in VB.NET?
I read somewhere that interfaces can have member variables.Static final constants only, can use them without qualification in classes that implement the interface. On the other paw, these unqualified names pollute the namespace. You can use them and it is not obvious where they are coming from since the qualification is optional.
Public Interface ISegment ''' <value> ''' The offset where the span begins '''</value>
[code]....
The problem is that when I try to use the interface in another class, it tells me that Offset and Length are not members of ISegment. Clearly they are. Here is the code that uses the interface
Public Sub UpdateSegmentListOnDocumentChange(Of ISegment)(ByVal list As List(Of ISegment), ByVal e As DocumentEventArgs) Implements IDocument.UpdateSegmentListOnDocumentChange
I have a public interface. i have class that implements the interface, how do i make the implementation of interface members internal or private in the implementation class? If i declare an interface internal, how to implement that in an public class?
In the following code i get a warning at line 59:Warning 1: Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated.and.. At line 78 I get this Warning:
Warning 2 Property 'SelectedCustomer' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
The program compiles and runs well, but i cant' undesrtand the reason for these warnings. Any Idea ?
1: Public Class Form1 2: 3: 'Form level members 4: Private objCustomers As New ArrayList
Cannot appear to be able to get this function to not have the above error.Private Function GetIncidentActions(ByVal FromAgentID As Integer, ByVal ToAgentID As Integer, ByVal incidentAction As Integer, ByVal ActionDate As Date) As String
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.
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?
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)
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'm "cloning" objects in my code. For instance: objClone = objOriginal My question is: Does the assignment operator in VB.NET 1.1 do a member-by-member copy of the objOriginal to objClone or does objClone simply point as a reference to memory referenced by objOriginal?
i changed a class variable to shared so i can access it in all instances of the class, but it caused an error. what is causing this, and how can i fix it?
I have 2 tables Table A & Table B Table A has the table values that I want to be populated in a datagridview control.The challenge is that column 1 in table A contains an ID(foreign key) to a name field that is a located in table B. I need the datagrid to have the first column be a combobox that displays the names(from Table B) that are already in table A via the ID's, but reference the populating values from Table B. So that when you bring down the combobox you would be choosing from Table B data but populating table A with the ID and you would see a name there instead of an ID.[code] How do I populate my DS dataset with Table B? And how can I create a link to these two tables using a bound datagridview control?
I get this error if I follow these steps: Change property Y of an object (an associated entity property) Attempt to submit changes At this point the value of Y and the value of X (the underlying key) are not in agreement -- LINQ to SQL apparently doesn't synchronize these until GetChangeSet is called.An expected error occurs due to some business logic or database level constraint during the update operation.At this point the value of Y is in agreement with X because GetChangeSet was called.Change the value of Y to Nothing (aka null).Call GetChangeSet.
The error occurs on the last step because the value of X and the original value of X (returned by GetOriginalEntityState) are different, and the new value does not agree with Y? Is that why? Is this a bug in LINQ to SQL. Must be because I don't see the same behavior if I change Y to another (non-null) value instead during step 5. What's the right way around this? I can see a few ways:
Discard the DataContext when an error occurs and leave the UI as-is. I don't like this because then optimistic cocurrency change conflicts cannot be detected. The new context doesn't have the original values in it that were populated at the same time the UI was populated, so if the UI has any stale values in it, they will cause data in the database to revert.Refresh the datacontext (OverwriteCurrent) and leave the UI as-is. I don't like this for the same reason as #1.Refresh the datacontext (OverwriteCurrent) and re-populate the UI. I don't like this because then the error message just presented to the user does not show the user the error they made and allow them to correct it. It also discards all the other changes the user may have made.When the error occurs, explicitly retrieve the key for Y that corresponds to the original value of X and reset Y, then call GetChangeSet to re-synchronize X (X is read-only or private so I can't reset it directly). This seems to work, but seems like a hack, and may require lots of code for other similar errors.
I know I have done this before and as I remember it should be really easy. But for some strange reason I can't do it now and I am about to jump off the building.I will make it simple:Two tables, one is just a list of products and their code.The other table: "details" has a field named product. I want to store only the code there.In the second table's entry form, I am putting a combobox. This combo box should display the list of products, their names, but depending on which one is selected, the code is what is passed to the table "details". Currently If I set the display member to product and the value member to code it still pases the product to the binded data source.
I have a database that holds information about a particular job. One of those things is a customerID. CustomerID links to another table containing customer details. I have a combo box attached to a custom object that holds customerID as the valuemember and CustomerName as the displaymember.The JobDetails holds the customerID info. How do I set the default selection in the combobox based on the ValueMember of the combo box?
I'm working on a design project where I have to use a Graphical User Interface that contains a drag and drop form. It consists of having a window dropped on a wall. Both of them are images to scale. I would like to know what kind of code I would have to use to show the x and y coordinates of one of the points of my window when dragged so when I drop it, I'm dropping in it on the desired coordinate of the wall.
I was wondering if I could elicit some tips on how to procede with an interface design approach.That is. What is a good way to go about establishing a "work area" where one can have multiple "floating forms" in this area.Can you have a form which occupies the entire windows desk top and the other forms "float" in this space? the "floating" forms would need to interact with each other where pressing buttons etc on them would affect other forms on the "workspace") Or what would be a good way to start accomplishing that? Or is there a better way to get the same effect?
I'm trying to make a .dll that contains a lot of basic functionality that a program can use. Currently i am trying to use interfaces to make a lot of this functionallity independend of the program using it but i hit a snag. The Basic idea is that a programmer will create his own object using the interface discribed in my .DLL file. Then implements those functions as he likes. He can then instanciate a controller (found in the same DLL) and sends his custom object implementing the interface to that Controller. The controller can then be started and will take over all the work. I do not know what type of object is send to the controller and idealy i want to program it in such a fashion that i shouldn't care as long as the object send implements that interface.In code I am trying to achieve the following: (quite simplyfied)
.Dll: Code: Public Interface MyInterface '<----Decleration of the interfaceFunction GetData() As Integer Function SetData(Data As Integer) end interface
[code]....
this propperly. I know that the second i set the interface adaptor in the Controller VS comes nagging that it can not be converted to a "MyInterface" Class. Obviously i am doing something wrong. I can change the datatype that the controller expects to the "MyController" type but that would completely ruin the whole idea of flexibillity. I am hoping someone sees what i am trying to do and can point out where i made the thinking error.
Is this where i would post a picture of my interface and get feedback on changes for easier use? If not is there someplace on this forum or any other forum to do this?