如何解决使用 get 之间是否有任何边缘情况差异?放;单例服务的属性或 GetValue、SetValue 方法?
我将 microsoft.extensions.dependencyinjection
与 Xamarin Forms 结合使用,并且我创建了一个保存应用程序配置值的服务。这些被检索并备份到我的数据库中。
这里我向 DI 指定服务:
public static IServiceCollection ConfigureServices(this IServiceCollection services)
{
services.AddSingleton<IConfigService,ConfigService>();
services.AddSingleton<IDatabaseService,DatabaseService>();
return services;
}
我的应用程序代码使用此配置服务来更新配置值,例如配置表中的 Rev 值。使用 UpdateConfig
执行更新。
我想知道我获取和设置 Rev 值的两种方式是否有任何区别。
对我来说两者看起来都一样,但我想知道是否有一些我没有考虑过的边缘情况,或者是否使用 get; set;
是一种不被认为是使用 DI 做事的好方法的做法它可能会以我不知道的方式引起问题?
任何人都可以评论是否存在差异,两种方式是否都有效,或者一种方法是否是更改和检索 Rev
值的首选方法
以下是我想要的服务示例:
public partial class ConfigService : IConfigService
{
private IDatabaseService _databaseService;
private Config _config;
public ConfigService2(IDatabaseService databaseService)
{
_databaseService = databaseService;
_config = _databaseService.GetConfig();
}
public int Rev
{
get => _config.Rev;
set
{
_config.Rev = value;
_databaseService.UpdateConfig(_config);
}
}
public void GetRev()
{
return _config.Rev;
}
public void SetRev(int rev)
{
_config.Rev = rev;
_databaseService.UpdateConfig(_config);
}
}
解决方法
差别不大。
你的
public int Rev
被称为“属性”:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties
属性实际上只是语法糖,一种更方便的处理 getter 和 setter 的方法。 (GetRev 和 SetRev)。
从属性用户的角度来看,它更好一些。 他们可以写
Rev = newRev;
代替
SetRev(newRev)
这对很多人来说似乎更“自然”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。