我有很多我创建的对象,我在我的应用程序中使用全局。我希望在修改它们下的属性时保存它们。
这样的事情会起作用吗?如果我实际设置了Campaign的新值,而不是像Campaign.Name那样访问它下面的内容,那么这不会只保存它吗?
public Campaign Campaign
{
get { return _campaign; }
set { SaveCampaign(value); }
}
private static void SaveCampaign(Campaign campaign)
{
var databaseClient = new MongoClient(TerminusService.DatabaseConnectionString);
var server = databaseClient.GetServer();
var database = server.GetDatabase("TerminusDialer");
var collection = database.GetCollection<Campaign>("campaigns");
collection.Save(campaign);
}
答案 0 :(得分:0)
是的,只有在您将新值设置为Campaign
且未更改其名称时才会保存。
我有一个建议你可以试试:
您可以创建一个事件,只要该类中的属性发生更改,就会触发该事件。这是一个简单的例子:Watch it working on .net fiddle
class ListenToMe
{
public event EventHandler OnPropertyChanged;
private string _name;
public string Name
{
get{return _name;}
set
{
if (_name!=value)
{
this._name = value;
OnPropertyChanged(this,new EventArgs());
}
}
}
}
public static void Main()
{
ListenToMe someone = new ListenToMe();
someone.OnPropertyChanged += (o,e) => Console.WriteLine("My new name is: "+ someone.Name); // we will do something whenever props change
someone.Name = "Mary"; // upon changing it, it appears on Console
someone.Name = "Lucy";
someone.Name = "Angelica";
}
如果你四处寻找接口INotifyPropertyChanged
,你会看到很多关于这种方法的信息,它主要用于将UI元素绑定到视图模型(以及其他用途) )。
您也可以为每个set
的每个属性调用一个方法,但是您必须从Campaign
调用该方法,这可能是不受欢迎的。这就是为什么在这些环境中发布活动似乎更好。
注意:另外,作为建议,在做这种事情时要小心。我相信你这样做是为了自动保存&#34;每个步骤的信息,看起来很有趣,但如果您忘记每个属性集都会导致数据库更新副作用,您可能会在某些操作期间向数据库进行大量往返。