如何解决在 C# 中使用委托参数重构为泛型方法
所以我有下面的方法,但在将它们转换为使用通用 dbcontext 时遇到了问题。这里有什么想法吗?
public static async Task ExecuteScopeAsync<TDbContext>(this IServiceScopeFactory scopeFactory,Func<IServiceProvider,Task> action)
where TDbContext : DbContext
{
using var scope = scopeFactory.CreateScope();
var dbContext = scope.ServiceProvider.GetrequiredService<TDbContext>();
try
{
//await dbContext.BeginTransactionAsync();
await action(scope.ServiceProvider);
//await dbContext.CommitTransactionAsync();
}
catch (Exception)
{
//dbContext.RollbackTransaction();
throw;
}
}
public static Task ExecuteDbContextAsync<TDbContext>(Func<TDbContext,Task> action) where TDbContext : DbContext
=> ExecuteScopeAsync<TDbContext>(sp => action(sp.GetService<TDbContext>()));
我为第一个尝试了类似的方法(以及许多其他迭代),但似乎无法正确使用语法
class Loginviewmodel: ObservableObject {
@Published var email: String = ""
@Published var password: String = ""
@Published private (set) var errorAlert: Alerts? = nil
@Published private (set) var token: Token? = nil
private let webservice: Webservice
private var cancellables = Set<AnyCancellable>()
init(webservice: Webservice) {
self.webservice = webservice
$token
.sink { token in
KeychainWrapper.save(token: token)
}
.store(in: &cancellables)
}
func login() {
let user = User(username: email,password: password)
webservice
.authenticate(user)
.sink(receiveCompletion: { [weak self] completion in
if completion == .failure(_) {
self?.errorAlert = .authenticationError
}
},receiveValue: { [weak self] token in
self?.token = token
})
.store(in: &cancellables)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。