What Is Principle Behind Not Being Allowed To Hide Member
May 19, 2009
url...If a base class has a members, say a property, that you do not want exposed through the inheriting class then it appears to be not possible (at least with VB.NET) to fully remove the member so that consuming code of the inheriting class has no awareness of that member at all.I know there are ways to make it less prominent or to shadow it so that its functionality or appearance has been altered, but I'm just talking full removal all together.So my questions are:
1)Is my assumption correct (for VB.NET but I'd also like to know which languages do allow for this technique)?
2)(more importantly) What is the driving principle in OOD that supports this restriction?
My guess on question 2 is that inheritance is fundamentally about extensibility rather than the opposite (what is that word anyhow?).I suppose a base class should be protected so that the original intention is not changed so much as to be radically different.At that point one shoudl make a whole new class.But is there a principle behind such reasoning, if true?And is it really a "sin" to want to completely remove only one of a hundred members to essentially tweak the look or feel of that class?I can live with this restriction, but it has peaked my curiosity and I'd like to hear from others on the subject.For the sake of discussion here's a sample class try to make an inheriting class (multiple inheritance is okay too) in which DataSource is notvisible or usable under any condition.[code]
I have a class written in VB.Net exposed to COM via the ComClass & ComVisible attributes. The class is then made available to VBA via a TLB. In VB6 you could easily mark a member hidden in the object browser but still available with a check mark. In VB.Net the only way I found to make a member hidden the VBA object browser is to prefixing the name with an underscore.
Is there a way to hide a member without underscoring it?
I discovered today that the .NET framework follows the BODMAS order of operations when doing a calculation. That is calculations are carried out in the following order:
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'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 curious if it is possible to hide a group of text boxes from view in a form until a particular condition is met, and to have a custom set of text boxes for that condition. To give an example; I want radio buttons offering choices for a manner of searching records, the user selects one and then a specific set of text boxes are displayed for the user to utilize, if a different option is chosen a different set of text boxes will be shown. Is this something that can be done?
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?
how to hide exe into task-manager in windows 7 using vb.net windows application?I want exe is hide into task-manager in windows 7 & windows vista machine using vb.net(windows application)
I have a problem when trying to send a POST request. The sending method looks like this:
Public Sub SendXML(ByVal file As String) Dim reader As New StreamReader(file) Dim data As String = reader.ReadToEnd()
[Code]....
Now looking at this I suspected that it was due to the fact that the server does not accept POST messages. But some other reading suggests that the the URI [URL] has been generated with a proxy and should be /Request so the line should read POST /Request HTTP/1.1
So what would be the common reason for this? And if it is a proxy problem, how is it sorted?
As asked below, I have created a new question for the more specific request. Changing absolute URI to relative in HTTP POST header
I know that you cannot specify a constructor in an interface in .Net, but why can we not?
It would be really useful for my current project to be able to specify that an 'engine' must be passed in with the constructor, but as I cant, I have to suffice with an XML comment on the class.
i am currently having two problems with this assignment. The program allows the user to add new students to a listbox with a unique Id, lastname and test average. When adding a new student to the listbox, part of the assignment is to not have duplicate students added. I am currently stuck at trying to figure that out. I have figured out how not to have duplicate courses under the course information form but when trying similar code for adding a student i cant get anything i try to work. the next problem is when searching for a student from the list and clicking on the Course Information button, the course information added for that student needs to be displayed. My problem is getting the student searched information to show up right, but if i add three students and search for the first one i added and click on course information button it only shows the last student i added. this is my code for the whole program
Public Class Form1 Private allStudent As New List(Of Student) Private currStudent As Student
I got this Error : Reference to class 'ApplicationClass' is not allowed when its assembly is linked using No-PIA mode.
This Is My Code: Imports System Imports System.Collections.Generic Imports System.Drawing Imports System.Reflection Imports System.Threading [Code] .....
When I installed Visual basic 2008 express edition it seemed to work, but when i was going to make a project it pups up a error box and it says: Regestry it not allowed.
I am assuming "No", but I cannot find conclusive proof on Google to back this assumption. Using keywords of 'vb.net "generic operator overload"' yields exactly 1 result, and removing 'overload' gives more, but no direct statement to the issue.
My thinking is given an abstract class, it'd be great to be able to implement a generic operator overload that a derived class can use in such a case when said operator overload has to return a New copy of the derived class, yet the code for each overload is the same. If that makes any sense.
This touches back to my previous questions on my custom Enum class and overloading the bitwise operators (And, Or, Not, & Xor), but, this particular thought was prompted by a mere curiosity of "Can it be done?".
Here's what one of my custom enums basically look like: The parent, EBase is nothing special, just hosting common Name and Value properties, plus two shared operators, op_Equality and op_Inequality.
Friend NotInheritable Class EExample Inherits EBase Private Sub New()
[Code]....
Then (in theory anyways), calling EExample.OneA Or EExample.FiveE would work because the compiler would know to call the generic operator overload from EBase, know that EExample.Enums matches the IEnums interface constraint, and automatically supply T.
That or I'm just swimming up a certain creek here without a paddle and over-analyzing things. But it's an interesting thought, no? What is StackOverflow's consensus? Do I need to lay off the Spice a little bit?
PS: I use /* */ style comments because Markdown doesn't handle VB-style properly.
PPS: I know that, in the last example, Return New T( ... ) is invalid, but I can't think of a proper syntax that would articulate the basic idea.
I am getting an error "Operation is not allowed while object is closed". On this line of code "Do While myRecSet.EOF = False" here is all my code. First the module/function Code: Module Module1 Public coater As String Public myQuery As String Public myRecSet As New ADODB.Recordset Public Conn As ADODB.Connection [Code] .....
I just tried to build my application by pressing "Shift"+"Ctrl"+"B", and I got this error.
Error 1 Dialog Module 'AdminProgressForm' is not allowed in group 'End' C:Documents and SettingsITWONMy DocumentsVisual Studio 2005ProjectsHRMSHrmsSetupHrmsSetup.vdproj HrmsSetup
I am creating an login page connected to a database. I am using access ODB. the problem is, if the user makes an wrong input, and the invalid data message box appeared, when typing the data again, and press ok, the following exeption occured:Not allowed to change the 'ConnectionString' property. The connection's current state is open.[code]