|
Christian Graus wrote: it's regenerated by the IDE, so you're wasting your time
That's true, but I go in sometimes to change a component class to a non-system class, and the designer keeps it, even after regenerating (in fact, it fully qualifies the custom class with the namespace). Granted, you should avoid manually changing the file, it is possible to do.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
ok thanks a lot
|
|
|
|
|
If you edit the xxx.Designer.cs file and the code isn't correct the designer can't display the form until the code is corrected.
Everytime you change something in the designer, this file gets rewritten so it's possible (but not certain) that your changes will get overwritten/erased. That's why it's called 'Desigener'.cs
If you need to make any changes of your own that can't be done in the designer, put them in the xxx.cs file or create a xxx.MyStuff.cs file and create another partial class (of the same name) in there, and call any methods from the xxx.cs before/after the InitializeComponent call as appropriate.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
I am converting ArrayList to String Array in .NET 2.0 framework ...
string[] ControlButtons = (string[])controlList[i].ToArray(typeof(string));
but it through error 'object' does not contain a definition for 'ToArray' please give me solution to convert arraylist to string array
Thanks.
|
|
|
|
|
Did you try reading the error ? It doesn't know that the object is an arraylist, it only knows it's an object. So, you need to cast it.
((ArrayList)controlList[i]).ToArray
Why are you using Arraylist if you're using .NET 2.0 ? Use generic lists.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
I'm not sure what it is you want to achieve but dropping the [i] turns that statement into something that compiles.
|
|
|
|
|
This works fine for me:
ArrayList list = new ArrayList();
list.Add("a");
list.Add("b");
string[] arr = (string[])list.ToArray(typeof(string));
I guess you should do:
string[] ControlButtons = (string[])controlList.ToArray(typeof(string));
Regards,
Lev
|
|
|
|
|
Hello to all,
Here is my code:
client.HostToClient_Bytes(new CommsInfo_Bytes(Bytes));
[Serializable()]
public class CommsInfo_Bytes
{
private byte[] _Bytes;
public CommsInfo_Bytes(byte[] Bytes)
{
_Bytes = Bytes;
}
public byte[] Bytes
{
get { return _Bytes; }
set { _Bytes = value; }
}
}
when i am calling HostToclient_Bytes i am getting error say "Object refrence cannot be set as an instance of an object"
So will anybody helps me?
Thank you in advance.
|
|
|
|
|
Hi,
I'm just guessing but don't you need to declare a constructor without params if you want to serialize the object?
<br />
public CommsInfo_Bytes() {<br />
}<br />
Regards
Sebastian
|
|
|
|
|
hello,
I have done same implementation for messsage string passing in that i have not declare any empty construstor.
Thank you.
|
|
|
|
|
Hello,
But in string class i have declare as
private string _Message = "";
so any modification is needed in byte array declaration?
|
|
|
|
|
Normally this is not needed, but give it a try and set _Bytes = null;
Don't know if this is not the same, as everything is initialized with null...
|
|
|
|
|
Could you post the code of the method you call? (maybe the problem is within this method)
|
|
|
|
|
one would assume this means that client is null. Did you check in the debugger ?
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
Why not show the code with the error instead of a class that's (probably) not relevant?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi all,
maybe someone can explain me, why this doesn't work in C#. Do i missed something, or is it a stupid idea to extend a return type of an override?
public class Class_a
{
Stream _something;
public virtual Stream Property
{
get
{
return _something;
}
set
{
_something = value;
}
}
}
public class Class_b : Class_a
{
FileStream _something;
public override FileStream Property
{
get
{
return _something;
}
set
{
_something = value;
}
}
}
Thanks & Regards,
Johannes
|
|
|
|
|
Hello,
You are trying to override the property 'Property' in derived class and you are trying to change the return type of the property, which is not allowed in the C#. In C#.Net it is mandatory to keep the signature of method/property you want to override in the derived class.
Thanks,
Rahul Kulkarni
|
|
|
|
|
Hi Rahul,
thanks! I understand that i'm not allowed to change the return type. But i thought it should be allowed to extend it. So from the perspective of 'Class_a' the return type will always be "Stream". I know that i could use 'new' instead of 'override', but that wouldn't be the same and won't work with abstracts. This rule doesn't make sense to me.
regards,
Johannes
|
|
|
|
|
As explained, its not possible but its not such a stupid idea. Ive tried a similar thing once or twice and found frustration.
|
|
|
|
|
Have you found any elegant solution for this?
|
|
|
|
|
Well in your example, even if you return a FileStream from a method whose return type is Stream the calling code can cast it to its actual type (FileStream).
However this is, like most things, an architectural question where a different approach altogether is usually the most elegant solution.
edit: Generics can sometime help here
example coming....
|
|
|
|
|
I'm facing this problem in several situations and i'm pretty sure this is an architectural question.
This would be a good sample:
There is a mask with a persons list and some search fields. I have a ViewModel class which provides the data (List<person>) and the filter object (PersonFilter) where the search fields are bound to (WPF).
Later i want to build a customers mask. Where the Customer class is an extension of Person and the CustomerFilter an extension PersonFilter. So i would love to extend my ViewModel, but i cannot override my Filter Property.
Even if i'm sure that there won't be a solution, which let me do it this way. I thought it is time time to ask here.
Thanks and regards,
Johannes
|
|
|
|
|
Here's an elegant generics solution to your problem
public class StreamWrapper<T> where T : Stream
{
private T stream;
public T Stream
{
get { return this.stream; }
set { this.stream = value; }
}
}
public class FileStreamWrapper : StreamWrapper<FileStream>
{
public FileStreamWrapper()
{ }
}
When you instantiate FileStreamWrapper, its Stream property is correctly typed as FileStream.
FileStreamWrapper fsw = new FileStreamWrapper();
fsw.Stream = new FileStream(...);
|
|
|
|
|
While your solution if FAR better, the OP could also declare the property as new instead of override.
public class Class_a {
public virtual Stream Property { get; set; }
}
public class Class_b : Class_a {
public new FileStream Property { get; set; }
}
"Simplicity carried to the extreme becomes elegance."
-Jon Franklin
|
|
|
|
|
The easiest way to deal with this is to keep the type declaration of the base class property and cast to the actual type when working with the derived class. You can also consider whether you're going to need any of the functionality specific to FileStream . If Stream has all the functionality you need, then don't even worry about casting. I believe you may be able to do this with an Interface if you explicityly implement the interface item. Here's an example that works, but there's some trickery with an interface where you can have an explicit implementation of the interface defined that accesses the base class property and then a normal property of the same name that provides a different return type. Note that I had to implement the interface in both classes and also in Class_b I had to specifically cast to and from the different stream types. This is because even though Class_a implements the interface, I want to provide an explicit implementation in Class_b , so I have to implement it also in Class_b to do this. When you run this, Class_b.Property returns type FileStream while Class_a.Property returns type Stream .
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace TestClass_a
{
public interface IStream
{
Stream Property { get; set; }
}
public class Class_a : IStream
{
private Stream _stream = null;
public Stream Property
{
get { return _stream; }
set { _stream = value; }
}
}
public class Class_b : Class_a, IStream
{
public FileStream Property
{
get { return (FileStream)base.Property; }
set { base.Property = (Stream)value; }
}
#region IStream Members
Stream IStream.Property
{
get { return base.Property; }
set { base.Property = value; }
}
#endregion
}
class Program
{
static void Main(string[] args)
{
Class_a a = new Class_a();
a.Property = new MemoryStream();
Class_b b = new Class_b();
b.Property = File.Open("C:\\test.txt", FileMode.OpenOrCreate);
Class_a b2 = b;
bool canRead = b2.Property.CanRead;
}
}
}
Keep It Simple Stupid! (KISS)
|
|
|
|