Interface is a contract between client and server and it is necessary for a server to define or implement methods declared in interface. This is definition of internal and I believe that it means Interface should be public only, but while creating Interface when I use internal keyword before interface it works fine and doesn’t give me any compile time error, but I didn’t understand why.
Edit : Even if we can declare interface as internal it is necessary for a class method implementing interface member to be public. Why this?
The internal keyword means that the class or interface can only be used by other classes within the same assembly.
http://msdn.microsoft.com/en-us/library/7c5ka91b(VS.80).aspx
An interface is not necessarily a contract between two clients or servers, but rather it’s a promise that an object will implement certain methods or properties.
http://msdn.microsoft.com/en-us/library/87d83y5b(v=VS.71).aspx