|
Ok, I know this might sound simple, but it's not. I want to Implement the IList interface but I want certain members of it hidden (for example IndexOf and the default public object this[int Index] ) because I am creating a strongly-typed collection.
In VB.NET I could easily do this because each method knew that it was Implemented by a simple: Private Function IndexOf(Value As Object) As Integer Implements IList.IndexOf .
The Implementation was fine in VB like this because one could still cast the object to an IList type and access the methods on it even thought they were private within the Collection class.
Does anyone know how to do this?
|
|
|
|
|
VB lets you change the visibility of objects from an interface ? What a hack !!!
Have you thought of using C# 2.0 ? It's collections are strongly typed. Otherwise, your class will need to contain an IList, not be one.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Umm, no, VB does not let you change the visibility of objects from an interface. If you remember, Interfaces are SUPPOSED to be only methods WITHOUT accessors (i.e. Public, Private, etc.). So that means that any Class implementing that Interface can change the visibility to whatever they want, just as long as every method is Implemented. So, it's not a Hack, it is by design.
However, I did find out how to do this in C# if anyone is interested. It's called Explicit Interface Member Implementation[^] !!!
|
|
|
|
|
By the way, public and private are not accessors, they are "access specifiers" or "access modifiers."
Matt Gerrans
|
|
|
|
|
It doesn't make any sense to implement an interface and then try to hide some parts of it. The whole point of the interface is to communicate what methods and properties (or more generally, behavior) your objects support.
Sounds like what you should do is define your own interface that may be similar to IList , but is not, in fact IList .
I know I would be more than annoyed if I was presented with an object that seemed (and claimed) to implement some interface, but then failed to correctly support all the things that the interface implied.
Why would you want to do this?
Matt Gerrans
|
|
|
|
|
You see, it's very simple. For someone who writes object models for a living, I've seen a lot that just don't make any sense (ex. Adobe, Maximizer, etc.). I hate when someone gives a method like "Remove" when I am working with a collection of Files (Remove what?). Instead, I like to rename the Method to "Delete" and implement the "Remove" method privately. The private method will simply call the Public method on the collection class.
Don't get me wrong, I implement as much as the interface as I "can". There are some methods though that I DO like, however, the fact that you have to pass an object instead of my custom (strongly-typed) collection object (i.e. a custom File object for example). For example, if you Implement the IDictionary Interface, it uses this: IndexOf(object Key) . What? Since the Keys SHOULD all be strings in my collection, why do I want to allow a programmer to pass a Guid, Int, or whatever else they can think of? If they want a guid, pass a Guid.ToString() .
If you look at a lot of the pre-defined Collection classes Microsoft created, they also "hide" a lot of interface methods because they just don't make sense for the particular object, but you can still cast them to an Interface that they implement and use the Properties / Methods that way.
Now, as to why I am implementing an IList? Well, It's nice to have a custom collection class that can be databound to a DataGrid or other controls.
|
|
|
|
|
actually you can do this in C#, I wont implement all of IList but ill show you how to make Count available publically, but IndexOf only available when typed as IList
public class MyList : IList
{
public int Count
{
get{return this.count; }
}
IList.IndexOf(object obj)
{
return ...
}
}
|
|
|
|
|
Greetings,
I am curious if someone has a funtion implemented in C# similar Array REDIM in VB?
Sincerely,
Max Pastchenko
|
|
|
|
|
Use an arraylist if you want a resizable array.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Here's a simple one:
string[] Temp = new string[20];
Array.Copy(MyItems, 0, Temp, 0, MyItems.Length);
MyItems = new string[20] {};
Array.Copy(Temp, 0, MyItems, 0, Temp.Length);
Array.Clear(Temp, 0, Temp.Length);
Temp = null;
|
|
|
|
|
This is also something I found, not sure if it'll work but it looks good:
public static System.Array ResizeArray (System.Array oldArray, int newSize) {
int oldSize = oldArray.Length;
System.Type elementType = oldArray.GetType().GetElementType();
System.Array newArray = System.Array.CreateInstance(elementType,newSize);
int preserveLength = System.Math.Min(oldSize,newSize);
if (preserveLength > 0)
System.Array.Copy (oldArray,newArray,preserveLength);
return newArray;
}
|
|
|
|
|
That method looks very good.
Our Instant C# VB to C# converter converts VB redim preserve statements to C# in-line equivalents, via something like the following example:
VB:
Dim YourArray() As Integer
...
ReDim Preserve YourArray(i)
C#:
int[] YourArray;
...
int[] temp = new int[i + 1];
if (YourArray != null)
Array.Copy(YourArray, temp, Math.Min(YourArray.Length, temp.Length));
YourArray = temp;
(we have to add 1 since VB arrays sizes are specified in terms of their upper bound, not the number of elements)
David Anton
www.tangiblesoftwaresolutions.com
Home of:
Clear VB: Cleans up outdated VB.NET code
Instant C#: Converts from VB.NET to C#
Instant VB: Converts from C# to VB.NET
Instant J#: Converts from VB.NET to J#
|
|
|
|
|
I seconed use ArrayList
Reiszing array take more time and resource to make copy Operations think of it when you have array with many
Items not few ones
MCAD
|
|
|
|
|
I have written a function for a similar purpose that creates a dynamic array.
Here Check this out:
<br />
public static Array RedimNPreserve(int[] Arr,int Element)<br />
{<br />
System.Collections.ArrayList al = new System.Collections.ArrayList();<br />
int i;<br />
if(Arr!=null)<br />
{<br />
for(i=0;i<=Arr.GetUpperBound(0);i++)<br />
{<br />
al.Add(Arr[i]);<br />
}<br />
}<br />
al.Add(Element);<br />
return al.ToArray(typeof(int));<br />
}
Elvis (a.k.a. Azerax)
Life is Music listen to it before it fades
|
|
|
|
|
Thank you all for feedback,
I have been using arraylists thus far, but the code that i have seen is helpful.
Thanks again.
Sincerely,
Max Pastchenko
|
|
|
|
|
I am new to C# so Im trying to learn on my own. I need to disable a text box until a check box is checked. The reference material I've looked at so far has not helped me so in addition to help with this issue I would also appreciate suggestions on helpful references for learning C#.
|
|
|
|
|
myTextBox.Enabled = false, from memory.
Inside C# second edition, by Tom Archer, MVP
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
In your form constructor, set the textbox's Enabled property to false. Then, add an event handler for the checkbox's Checked event and in it, switch the textbox's Enabled property to true.
As far as reference material goes for C# itself, I love Tom Archer's Inside C#. That's the way to learn C#. (Although I've never read it, I hear that Jesse Liberty's Programming C# is also quite good. I can't believe it would be better than Tom's book though.)
Once you read that, you should read Jeffrey Richter's Applied Microsoft .NET Framework Programming for an excellent read on the CLR and the .NET Framework itself.
I would recommend the following for Windows Forms programming: Programming Windows with C# by Charles Petzold is very well written and quite large. Either that or Windows Forms Programming in C# by Chris Sells.
And for ASP.NET Programming, I've heard from many beginning ASP.NET people that Programming ASP.NET by Jesse Liberty is excellent. However, if you're comfortable with C# and .NET programming in general, then I highly recommend jumping straight into the deep end with ASP.NET and taking a look at Fritz Onion's Essential ASP.NET With Examples in C#.
Hope that helps.
[Cheshire] I can't afford those plastic things to cover the electric sockets so I just draw bunny faces on the electric outlets to scare the kids away from them...
[RLtim] Newsflash! Kids aren't afraid of bunnies.
[Cheshire] Oh they will be...
-Bash.org
|
|
|
|
|
Hi
I am having all sorts of grief with comparing two datasets when not directly editing the second dataset it's self, but rather populating it from the database, which HAS had updates, additions and deletes performed on it.
Currently I construct 3 datasets.
1. Original
2. Updated (by repopulating DS from changed table)
3. Changes (populated by merging 1 & 2 and calling GetChanges() )
Am I wrong in assuming the dataset is smart enough to do this? Or would I be better of writting a bunch of classes and then implement IComparable?
Thanks in advance!
|
|
|
|
|
Hi i am new to the .Net platform and after learning the basics and going further up for about 40 days and 40 nights (:P), i am stuck at a challenge. i have been given a task to set up a web service that Screen Scrapes web pages of my college and associates with these pages a relevant RDF file. A client using this service should than be able to use the RDF file in order to associate similar web pages.
Can somone provide me with the details as where to take the start from...i am able to handle screen scraping thing a bit but dont know much about the second part of the task....i have studied a lot of material available on internet about RDF and the semantic web but still not sure as how to use the knowledge using C#.
Asim Nazir
Student
|
|
|
|
|
Hi there,
I can't help you out right now, but i saw some similairity in what you're looking for and what i'm looking for.
See thread: http://www.codeproject.com/script/comments/forums.asp?forumid=1641#xx1200889xx[^]
Like you i'm new to .NET (primairly focusing on C#, ASP.NET and SQL2000) and interrested in what you learn about these subjects. If i find something that could help you with your task i'll let you know.
What is a RDF file anyway?
Goodluck soldier!
Just give me the blue pill...i dont want to go down into rabbitholes...
|
|
|
|
|
Thanks for the attention to my post!!
RDF means Resource Development Framework. The Semantic Web ( http://www.w3.org/2001/sw/ and http://infomesh.net/2001/swintro/) is an effort to put meaning into web pages by the inclusion of meta-data. This meta-data usually takes the form of an XML dialect called RDF. so RDF file actually is a metadata file containing information about the website, so that in the future may be all the websites will have an associated RDF file and the search engines will query the RDF files in order to extract the useful info. This is what i have understood about this RDF stuff till now.
|
|
|
|
|
I am able to copy files using the c# FileInfo class by specifying a UNC for the file name. This works great for copying files from one computer to another computer until my application does not have access to the source computer. How do I log onto the source computer with a network user name and password, and then copy the file off of that computer onto my local drive?
Thank you!
RobC
|
|
|
|
|
I am facing problem to connect oracle server with predefined datasource. Can anyone please tell me how can i create a connection with (ip address) , (orcale instance), (username) and (password).
Please also provide me few lines of code, to update a table with using parameters. I attemted sql like "update <tablename> set <field> = ? where pk = ?", but it did not work at all.
love2code
|
|
|
|
|
I really did work very little with Oracle for one project, but if I remember correctly, you need to install some client software, and it's in that software that you set up the connection to the server. In you .NET code (using Oracle Data Provider) your connection string basically looks like this:
Data Source=schema name;User Id=user name;Password=password" As you can see, no server information is there.
As for the parameter question, its something like this:
string sql = "UPDATE Table SET Field1 = :p_Field1 WHERE Field2 = :p_Field2";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add("p_Field1", someValue);
cmd.Parameters.Add("p_Field2", someOtherValue);
cmd.ExecuteNonQuery(); I hope this helps a little. Good luck!
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
The amount of sleep the average person needs is five more minutes. -- Vikram A Punathambekar, Aug. 11, 2005
|
|
|
|