|
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
|
|
|
|
|
Thanks, Luis
My parameters problem has been solved.
But think those situation where my client machine has .net installted and oracle net client installed. When i run my program from that machine, it continues searching Oracle Server. My program does not know the Orcale [alias] or [data source] configured at that machine.
Please provide me such Microsoft Solution.
Thanks again.
PK Biswas, India.
love2code
|
|
|
|
|
Still a tree view control bugs me. In the Windows Explorer and other apps (Studio comes to mind) when you're dragging things over a Tree View control, you get a highlight on the tree item you're currently dragging over. This doesn't want to happen in my own .NET application. Is there some property I can set, or do I have to import something from the Platform SDK? Thanks for your help.
|
|
|
|
|
Try setting
treeview.AllowDrop = true;
|
|
|
|
|
Oh, I'm sorry--to clarify, I already have a lot of drag/drop functionality coded (you can already drag/drop, cut/paste/copy etc like in Windows Explorer. I just don't have a drop highlight like I want, and I'm hoping there's a simple property/style to set, instead of needing to add yet another member var so I can highlight it manually. Doing more manual highlighting is bad since it seems to cause flickering.
|
|
|
|