Autor Beitrag
TheBeginner
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 23.02.17 07:35 
Hallo @all,

ich stehe noch ganz am Anfang von C# und möchte gerne ein kleines Anfänger Projekt erstellen, indem ich den Umgang mit VS2012 lerne.
Mein Problem ist jetzt folgendes:

Ich habe ein Formular, auf dem Formular soll es ein Methode geben die allen anderen Komponenten des Projektes zur Verfügung stehen, also public.
Dieser Methode möchte ich einen Parameter übergeben, allerdings soll dieser Prameter ein Interface sein.
ungefähr so:

ausblenden C#-Quelltext
1:
2:
3:
4:
public void TestMethode (ITestInterface : value)
{

}


wenn ich das so einbinde, kommt eine Fehlermeldung:
FInkonsistenter Zugriff: Parametertyp 'ITestInterface' ist weniger zugreifbar als Methode '.TestMethode

wenn ich das public entferne kommt keine Fehlermeldung, aber die Methode ist auch nicht mehr von überall erreichbar.
Ich habe den Fehler schon gegoogelt, die Antworten bei dieser Fehlermeldung sagen immer, das die Zugriffseigenschaften unterschiedlich sind, dass kann ich aber nicht nachvollziehen, denn ein Interface ist doch immer public ?
Vielleicht hat ja jemand eine kleine Ideee für mich.

Danke
TheBeginner

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20395
Erhaltene Danke: 2212

Win 10
C# (VS 2017)
BeitragVerfasst: Do 23.02.17 08:28 
Moin und :welcome:!

Ein Interface ist nicht immer public, sondern hat die Sichtbarkeit, mit der er es deklariert wurde. Steht nix dran, ist es internal.

Desweiteren: der Doppelpunkt hat beim Methoden-Parameter nix verloren ;-)

Außerdem: Warum VS2012? Aktuell ist VS2015, in wenigen Tagen VS2017. Beide gibt es als kostenlose Community-Edition und beinhalten auch entsprechend aktuelle Compiler mit erweiterten Sprachfeatures.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
TheBeginner Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 23.02.17 10:22 
Hallo Christian,

erstmal vielen Dank für Deine Antwort.
Stimmt der ":" stammt noch aus pascal :-), sorry.

Aber auch wenn ich im Interface ein public davor schreibe, bleibt der Fehler erhalten.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


{
   public interface ITestInterface
    {
     
       void test1();
       void test2(string eingabe);
       
    }
}

wenn ich jetzt noch vor dem void ein public schreibe bekomme ich die Meldung:
Der public Modifizierer ist für dieses Element nicht gültig.

Irgendwie habe ich die Grundlagen noch nicht so auf dem Schrim.

Danke für den Hinweis, da werde ich mir wohl mal das neue Studio holen.
Gruß Michelle

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20395
Erhaltene Danke: 2212

Win 10
C# (VS 2017)
BeitragVerfasst: Do 23.02.17 10:44 
Ist das Absicht, dass das Interface zu keinem Namespace gehört?

Dass Du bei Interface-Membern nicht nochmal public davor schreiben kannst / musst, ist richtig, denn da macht nix anderes Sinn.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
TheBeginner Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 23.02.17 11:40 
Nein ich habe nur den unteren Teil rauskopiert.
Also meinst du es sollte so funktionieren?
Ich werde noch ein bisschen weiter nach anderen Beispielen suchen.