1) A class in c# can derive from one class and can implement as many interfaces as it wants.
2) an abstract class contains abstract methods and normally at least one non-abstract method. They are used if there exists a common behaviour (non-abstract methods) and methods that can only be implemented by derived classes (abstract methods).
3) interfaces are used to define an Interface that means it describes what some object can do.
4) you can look at an interface as a class containing only abstract methods
5) because you can not have multiple inheritance in c#, interfaces are used instead.
A good object oriented base idea is that you always program against an interface and never against a class. This simplifies loose coupling of components a lot as well as it allows the replacement of an instance implementing a certain interface with another (good in testing with mocks for example) or if your code has several strategies to handle something that can be exchanged (strategy pattern).
I'm stopping now, it's going loooong.
no risk no funk ................... please vote ------>
There's also the benefits of using Interfaces as contracts for communication through .NET Remoting.
If the server exposes an Interface, the clients don't have to know the inner workings that's going on on the serverside.
I have some code in C which I need to convert in C#. The very first line of C code is an Include file. So how can I convert this line in C# code or what is the equivalent of this in C#? I have already tried system.math class but I want to convert this particular in C#.
[StructLayout(LayoutKind.Sequential, Size = 16)]
public struct MESSAGE_INFO
public UInt16 _MessageCode;
public UInt16 _ChannelNo;
public UInt16 _Parameter;
Now when i declare pointer to this structure, It throws the error "Cannot take the address or size of a variable of a managed type"
But if i declare "public UInt16 _Parameter" as only "public UInt16 _Parameter" then it compiles perfectly.
Any light on this would be highly appreciated...
Thanx in advance
MSDN[^] says (at the top of the page) that the pointer can point to "Any user-defined struct type that contains fields of unmanaged types only". When you define the field as an array, then it's considered a managed type. When you define it as just a UInt16, then it's considered an unmanaged type (sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool).
Check out my blog at http://tjoe.wordpress.com
but how do you send two arguments to be put in one string array when the called function has one string array defined in its header..
privatevoid SayHi(string str_In)
SayHi(<blink>"Hi"</blink>,<blink>"Cpian!"</blink>); //of course this's wrong, but how to do it without having to create another string array, fill it and send it;
Smile: A curve that can set a lot of things straight!
I'm new to C# and the whole server/client thing, as an exercise I've made a simple board game for two players, now I'd like to make it playable on the net which is obviously not a trivial task (for me anywayz). I was looking for SIMPLE tutorials or articles about creating a web servers and clients, but havnt found anything basic enough - I need an example of client and server passing very basic pieces of data (strings?) on simple events between them, but the articles I've seen deal with more complex project. A point in the right directon would be very appreciated, thanx.
Remoting is an easy way of getting data flowing between the server and the clients.
Take a look at MSDN http://msdn2.microsoft.com/en-us/library/ms973857.aspx[^] or CodeProject http://www.codeproject.com/csharp/dotnetremotingbasictutor.asp[^]
Try creating two custom objects that you use as communication channels.
Let the server expose it's serverchannel object through remoting, and when client contacts the server through the channel, it can register the client and set up a remoting connection back to the clientchannel object, which the client exposes through remoting aswell.
You can put appropriate communication and game methods in these channels aswell as events which you can monitor.
-- Modified --
If you choose to go for a remoting solution where both sides expose a marshalled (remoting) object, remember to have each side set up their own remoting servers before they try and contact the other side. Otherwise the attemt at setting up local remoting server will fail as the remoting proxy from the otherside blocks the local server from being set up correctly.
without importing from win32 dll-s
or how do I communicate with a device with C# build in classes.
Does C# has something like this ? classes for registering/unregistering a service, and communicating via IOCTL's
Use DeviceIoControl without using Win32?? Impossible. You have no choice but to import the function calls.
how do I communicate with a device with C# build in classes.
That depends entirely on the device in question, but if it's not connected to a Serial Port, you don't. There are no classes native to the .NET Framework that deal with device communication, like USB, PCI, low level disk/volume work, ...
classes for registering/unregistering a service
Yes, this is built into the .NET BCL. I believe it's the ServiceInstaller[^] class in the System.ServiceProcess namespace.