Jetzt verstehe ich.
Ich muss den Key "SQL Server Compact Edition Database File" nehmen, der als Wert bei standard unter dem Schlüssel .sdf angegeben ist.
Jetzt klappts, danke!
sondern unterhalb des Knotens, auf den er in seinem default Eintrag verweist...
Wie "verweise ich einen default Eintrag" ? Das versteh ich nicht.
Also ich mach den shell-Schlüssel z.B. unter den neuen Schlüssel Test.sdf und dann ?
Hi,
ich möchte gerne das Kontextmenü erweitern, wenn ich auf eine .sdf-Datenbankdatei rechts klicke.
Ich habe aktuell folgenden Quellcode
public static void Create()
{
string keyName = ".sdf";
string contextName = "Das ist ein SDF Test";
string exe = @"C:\Users\........exe";
bool isWritable = true;
try
{
RegistryKey classesRoot = Registry.ClassesRoot;
RegistryKey parentKey = classesRoot.OpenSubKey(keyName, isWritable);
parentKey.CreateSubKey("shell");
RegistryKey shell = parentKey.OpenSubKey("shell", isWritable);
RegistryKey context = shell.CreateSubKey(contextName);
RegistryKey command = context.CreateSubKey("command");
command.SetValue("", exe);
classesRoot.Flush();
classesRoot.Close();
}
catch (Exception)
{
throw;
}
}
Wenn ich jetzt das Kontextmenü aufrufe sehe ich nichts. Was mache ich falsch ?
OK, und wie sage ich meiner Software sie soll ein bestimmtes Interface verwenden ?
Hallo,
mit welchen Klassen muss ich arbeiten, wenn ich eine Liste von verfügbaren Internetverbidungen angezeigt bekommen möchte ? (WLAN, UMTS Stick usw...)
Am besten noch dazu: Momentan verbunden mit: so und so
Stimmt, das sollte man negieren, war aber nur ein Beispielcode. Ich habe keine News-Klasse bzw. Reader. Das war nur um die Frage zu veranschaulichen.
Ok, danke für eure Informationen. Anscheind sollte so eine Klasse nur als Datenstruktur dienen und nicht wirklich Logik beinhalten.
Moin,
Ich habe oft das Problem, die Verantwortlichkeiten in meinen Klassen zu erkennen.
Und vor allem: Spricht man schon von einer Verantwortlichkeit, wenn ich eine Methode in meine Klasse habe, die nur wiederum eine andere Methode von einem Objekt einer anderen Klasse aufruft und ich in meiner eigenen Klasse nicht die
Logik implementiert habe? (später bei DownloadDescription als Beispiel)
Ich habe z.B. eine Klasse: News
public class News
{
public News(Uri page)
{
this.Page = page;
this.Title = "Kein Titel vorhanden";
this.ShortDescription = "Keine Beschreibung vorhanden";
}
public Uri Page { get; set; }
public string Title { get; set; }
public string ShortDescription { get; set; }
}
Diese Klasse hat erstmal kein Verhalten, ist nur da um Daten zu einer
Nachricht,
die aus dem Web kommt, zu speichern.
Wenn ich jetzt diese Nachricht im Browser anzeigen möchte, könnte ich
folgende Methode schreiben:
public void OpenInBrowser()
{
try
{
Process.Start(this.Page.AbsolutePath);
}
catch (Exception)
{ }
}
Die Nachrichten-Klasse beinhaltet jetzt die Daten und kann die Nachricht im Browser öffnen...
2 Gründe zur Änderung (2 Verantwortlichkeiten) ??
Oder Wenn ich folgende Methode habe:
public class News
{
private DescriptionDownloader descDownloader;
public News(Uri page)
{
// usw...
public void DownloadDescription()
{
if (this.descDownloader == null)
{
this.descDownloader = new DescriptionDownloader();
}
string desc = this.descDownloader.GetDownloadedDescription();
if (string.IsNullOrEmpty(desc))
{
this.ShortDescription = desc;
}
}
Jetzt würde man auf jedenfall davon sprechen, das die Klasse mehr als eine
Verantwortlichkeit oder ?
Wichtigste Frage vllt:
Oder WÄRE NUR DIE IMPLEMENTIERUNG der "DownloadDescription-Logik" als weitere
Verantwortlichkeit zu bewerten und NICHT ALLEIN DER AUFRUF der Methode aus der DescriptionDownloader-Klasse, wie in dieser Methode???
Also ein Ja oder Nein hätte mir schon gereicht 😉
Das ist nur ein Beispiel, den ich hier per Webseite eingetippt habe. Also ich habe keine Game oder Logger Klasse in einem meiner Projekte.
Kann man nicht allgemein sagen, Beispiel 2 wäre in Bezug auf hohe Kohäsion "erlaubt" und Beispiel 1 nicht ?
Hi,
Die Fassade bietet eine einheitliche Schnittstelle für mehrere andere Komponenten (Subsystem), wie in meinem Beispiel der Logger.
Also ist doch nur mein Beispiel 2 "korrekt" ??
Man sagt ja, das eine Klasse nur eine Verantwortlichkeit haben soll und keine mehr
Also eine hohe Kohäsion (Zumindestens spricht man dann von einem guten OO-Design).
Jetzt die Frage:
Heißt das, dass ich die Implementierung einiger Funktionen nur nicht in einer Klasse gemeinsam unterbringen darf ? oder sie nicht mals von einer anderen Klasse aufrufen ?
Ist schwer zu formulieren, ich hab da mal ein Beispiel...
Beispiel 1:
public class Game
{
public void Play()
{
// Quellcode
}
public void Stop()
{
// Quellcode
}
public void Login()
{
// Quellcode
}
public void Logout()
{
// Quellcode
}
}
Hier wird die Login/Logout Implementierung direkt in der Game Klasse geschrieben, dieses ist ja nicht zu gruppieren mit dem Play() und Stop(), also eine andere Verantwortlichkeit. Das soll man ja vermeiden.
Ist folgendes allerdings, in Bezug auf ein gutes Entwurfsdesgin, erlaubt ?
Beispiel 2:
public class Logger
{
public void Login()
{
// Quellcode
}
public void Logout()
{
// Quellcode
}
}
public class Game
{
private Logger logger = new Logger();
public void Play()
{
// Quellcode
}
public void Stop()
{
// Quellcode
}
public void Login()
{
this.logger.Login();
}
public void Logout()
{
this.logger.Logout;
}
}
Hier wird die Implementierung bzw. die Verantwortung in der Logger Klasse ausgelagert, aber trotzdem durch die Klasse Game aufgerufen.
Hat die Game Klasse also weiterhin nur eine Verantwortlichkeit bzw. eine hohe Kohäsion oder eine geringe ?