A typical case about interfaces [modified]
-
the following code is in C# I have 2 interfaces public interface Interface1 { string ReturnString1(); } public interface Interface2 { string ReturnString1(); } now i implement both the interfaces in a single class Class A:Interface1,Interface2 { } now according to my searchings i found that we can implement both the interfaces in the following manner Class A:Interface1,Interface2 { public string Interface1.ReturnString1() { return "Interface1.ReturnString1"; } public string Interface2.ReturnString1() { return "Interface2.ReturnString1"; } } but on compiling it is giving an error:"the modifier public is not valid for this item" after i remove public and then i compile the code, it compiles successfully but i'm not able to access these methods by creating an object of the class. Can anyone solve this problem Amit More (CMC) -- modified at 3:01 Wednesday 6th June, 2007 Amit More (CMC)
-
the following code is in C# I have 2 interfaces public interface Interface1 { string ReturnString1(); } public interface Interface2 { string ReturnString1(); } now i implement both the interfaces in a single class Class A:Interface1,Interface2 { } now according to my searchings i found that we can implement both the interfaces in the following manner Class A:Interface1,Interface2 { public string Interface1.ReturnString1() { return "Interface1.ReturnString1"; } public string Interface2.ReturnString1() { return "Interface2.ReturnString1"; } } but on compiling it is giving an error:"the modifier public is not valid for this item" after i remove public and then i compile the code, it compiles successfully but i'm not able to access these methods by creating an object of the class. Can anyone solve this problem Amit More (CMC) -- modified at 3:01 Wednesday 6th June, 2007 Amit More (CMC)
amitcoder83 wrote:
string ReturnString1();
the default access for any method or property is private. If you remove 'public' then they default to private right through your code.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
-
the following code is in C# I have 2 interfaces public interface Interface1 { string ReturnString1(); } public interface Interface2 { string ReturnString1(); } now i implement both the interfaces in a single class Class A:Interface1,Interface2 { } now according to my searchings i found that we can implement both the interfaces in the following manner Class A:Interface1,Interface2 { public string Interface1.ReturnString1() { return "Interface1.ReturnString1"; } public string Interface2.ReturnString1() { return "Interface2.ReturnString1"; } } but on compiling it is giving an error:"the modifier public is not valid for this item" after i remove public and then i compile the code, it compiles successfully but i'm not able to access these methods by creating an object of the class. Can anyone solve this problem Amit More (CMC) -- modified at 3:01 Wednesday 6th June, 2007 Amit More (CMC)
Its correct that modifier public is not valid for those function. Also pls make sure you are accessing those function from a object type of Interface1 or Interface2 and not from a object of the class A directly, to get the access to those function. i.e. Interface1 interface1 = new A(); interface1.ReturnString1(); //Here you will be able to access the function.
Manoj Never Gives up
-
amitcoder83 wrote:
string ReturnString1();
the default access for any method or property is private. If you remove 'public' then they default to private right through your code.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
I think you are not correct:-)
Manoj Never Gives up
-
Its correct that modifier public is not valid for those function. Also pls make sure you are accessing those function from a object type of Interface1 or Interface2 and not from a object of the class A directly, to get the access to those function. i.e. Interface1 interface1 = new A(); interface1.ReturnString1(); //Here you will be able to access the function.
Manoj Never Gives up
All the code is in C#, so if i dont specify access modifier then by default it is public after implementing the methods in an interface we can access the methods thru that class's object.why can't we do the same with this. Amit More(CMC) -- modified at 3:10 Wednesday 6th June, 2007
-
All the code is in C#, so if i dont specify access modifier then by default it is public after implementing the methods in an interface we can access the methods thru that class's object.why can't we do the same with this. Amit More(CMC) -- modified at 3:10 Wednesday 6th June, 2007
See the function name in the class A is as Interface1.ReturnString1(), and thats why you can not a.ReturnString1(). But the function name for the Interface1 is "ReturnString1" and you can call it using object of type Interface1.
Manoj Never Gives up
-
See the function name in the class A is as Interface1.ReturnString1(), and thats why you can not a.ReturnString1(). But the function name for the Interface1 is "ReturnString1" and you can call it using object of type Interface1.
Manoj Never Gives up
can u give me a code snippet about how actually u implement it
-
can u give me a code snippet about how actually u implement it
I wrote you code in the previous replies it self. In your case: A aa = new A(); //Cast it to interface Interface1 interface1 = aa; //Now u can call the Function ReturnString1 interface1.ReturnString1(); Also you can write it as: ((Interface1)aa).ReturnString1();
Manoj Never Gives up
-
I wrote you code in the previous replies it self. In your case: A aa = new A(); //Cast it to interface Interface1 interface1 = aa; //Now u can call the Function ReturnString1 interface1.ReturnString1(); Also you can write it as: ((Interface1)aa).ReturnString1();
Manoj Never Gives up
thank u very much for ur proper consultation.
-
I think you are not correct:-)
Manoj Never Gives up
-
amitcoder83 wrote:
string ReturnString1();
the default access for any method or property is private. If you remove 'public' then they default to private right through your code.
Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
The default access for a method is public ... "but" ... when explicitly implimenting an interface method it is automatically public and you cannot put any modifier on it, even the public one. Explicit Interface Implementation Tutorial[^] How to: Explicitly Implement Interface Members (C# Programming Guide)[^]