Client Settings - Part 3
RichB has some interesting questions in his comments about my earlier post on the client settings feature. I thought it might be worth a separate post to answer them.
I don't have the CTP available, but from the documentation it appears that ApplicationSettingsBase can read and write to a collection of providers. I can understand the writing to multiple providers (saving the same values into multiple locations) but how does it read the same values from multiple locations.
Yes, a settings class can talk to multiple providers, but each setting (or property) in it is associated with a single provider. This just means that you can have different providers for different settings in a settings class.
I also hope you have a good "story" for plug-in based applications. For example, Lutz Roeder's Reflector and Nikhil's Web Matrix are both heavily pluggable. Is there a prescribed way for each plug-in/component to obtain and save configuration information to the same store?
Yes, we have a story for this scenario. There is an interface called IPersistComponentSettings that any component can implement to save its own settings when hosted in an application. For example, the ToolStrip control implements this. Someone using the ToolStrip in their app can just set a property called SaveSettings to true and the ToolStrip will save/restore settings automatically without the user having to set anything up.
I'm also a bit hazy on Setting Groups. I've noticed the SettingsGroupNameAttribute - but am not entirely clear on how it's meant to be used.
Usually, the settings class name is used to identify your settings in the store. If you want them stored with a different name or share settings with some other class, you can use the SettingsGroupNameAttribute to rename/redirect your settings.
Finally, do you have generic methods for loading from the store to prevent boxing?
No, but that's a good suggestion. We will consider doing this.
Comments
- Anonymous
July 28, 2005
Hi Prabhu,
I had seen your client settings blog from part1 to part3, in all of these you are explaining about the ApplicationSettingsBase but I want to write my own custom SettingsProvider class. please help me out in
How to write a custom SettingsProvider class?I am asking this question as we could not able to get any links explaining it in better way. If you can provide any samples that will be helpful and also please provide us a solution how to set this custom SettingsProvider to the application, so that application reads the settings from the custom SettingsProvider rather than default LocalFileSettingsProvider
Thanks
MDeevi. - Anonymous
July 29, 2005
I have replied to your question here: http://blogs.msdn.com/rprabhu/archive/2005/06/29/434007.aspx - Anonymous
August 30, 2005
The comment has been removed - Anonymous
August 30, 2005
The comment has been removed - Anonymous
February 24, 2006
The comment has been removed - Anonymous
February 25, 2006
Hmm, it appears to be running into a null ToolStripItem. Not sure why. I would recommend contacting Jessica (ToolStrip developer) through her blog at http://blogs.msdn.com/jfoscoding to see if she can help.
Alternately, you could report this issue through MSDN Product Feedback - you can usually expect to get a quick response that way. - Anonymous
May 31, 2006
Hi Prabhu
I have property which is of type class x and is an array. It does not serialize and complains that class x is not defined as serializable. Here's what class x looks like:
namespace xSettings
{
[Serializable]
public class x
{
private string FName;
private string FAddress;
public string Name{ get {return FName;} } set {FName = value;} }
public string Address{ get {return FAddress;} } set {FAddress = value;} }
}
}
and is defined in xApp application settings as follows:
Name -> MyList
Type -> xSettings.x[]
Scope -> User
And in code, (C#) I save this way:
Settings.Default.MyList = arrList;
Settings.Default.Save();
How can I save arrays?
TIA
Nayan - Anonymous
June 07, 2006
Nayan:
Hmm, this should work, but there are some subtleties around the VS settings designer.
I have moved to a different team in Microsoft a few months back, so I am not in touch with this stuff. I recommend contacting Johan Stenberg through his blog - http://blogs.msdn.com/johan_stenbergs_blog/ - he may be able to help. In fact, he might already have a post which answers your question.