J'ai ajouté un objet DataSet fortement typé à mon projet. C'est le nom de type est DocRetrieverDataSet
. J'ai également dans mes paramètres de projet une ligne pour une propriété DataSet user-scope nommée DocRetrieverDataSource à laquelle je veux enregistrer une instance de DocRetrieverDataSet
.Enregistrement et chargement d'un DataSet fortement typé à partir des paramètres
Voici le code-down bouillie:
using Settings = MyProjectNameSpace.Properties.Settings;
....
private DocRetrieverDataSet myDocRetrieverDataSet;
public myForm()
{
Initialize();
if (Settings.Default.DocRetrieverDataSource == null)
{
Settings.Default.DocRetrieverDataSource = new DocRetrieverDataSet();
Settings.Default.Save();
}
this.myDocRetrieverDataSet = (DocRetrieverDataSet)Settings.Default.DocRetrieverDataSource;
}
La première fois que je lance, quand Settings.Default.DocRetrieverDataSource
est null
, il fonctionne très bien! Cependant, quand je lance la deuxième fois, je reçois un InvalidCastException
à
this.myDocRetrieverDataSet = (DocRetrieverDataSet)Settings.Default.DocRetrieverDataSource;
Il dit
Unable to cast object of type 'System.Data.DataSet' to type 'DocRetriever.DocRetrieverDataSet'.
Le plus drôle est qu'il n'a pas ce problème, la première fois. Que se passe-t-il et comment puis-je le réparer?
PLUS D'INFO: Voici le code correspondant de Settings.Designer.cs
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Data.DataSet DocRetrieverDataSource {
get {
return ((global::System.Data.DataSet)(this["DocRetrieverDataSource"]));
}
set {
this["DocRetrieverDataSource"] = value;
}
}
Et de App.Config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=abcdefghijkl" >
<section name="DocRetriever.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=abcdefghijkl" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<DocRetriever.Properties.Settings>
<setting name="SpoolDirectoryPath" serializeAs="String">
<value />
</setting>
<setting name="OutputDirectoryPath" serializeAs="String">
<value />
</setting>
</DocRetriever.Properties.Settings>
</userSettings>
</configuration>
Merci, je pense que je comprends ce que cela essaie de faire, mais ça ne fonctionne pas. Je vais inclure la section appropriée de Settings.Designer.cs et app.config afin que vous puissiez mieux me diriger vers ce que j'ai besoin de changer. (Je n'ai jamais touché app.config avant.) – user2320861
Lorsque j'ai cliqué sur parcourir, je n'ai pas pu naviguer dans ma classe, alors j'ai essayé de taper 'DocRetriever.DocRetrieverDataSet' dans le champ de la zone de texte et cela a fonctionné! – user2320861