Tag: c#

在实现自己的IUserStore时,类上的“可选”接口实际上是可选的吗?

我正在使用Microsoft的Asp.Net Identity框架版本2,并且正在实现我自己的IUserStore。 我的新类MyUserStore实现了IUserStore接口和IUserPasswordStore ,这是将它与UserManager类一起使用所需的。 或者至少这是我从阅读教程中收集的内容,如下所示 : “身份系统中所需的一个接口是IUserStore” – Scott Allen 但是,当我运行代码时,情况似乎并非如此。 我初始化我的经理: var uMan= new UserManager(new MyUserStore()); var sMan = new SignInManager(uMan,authCtxFromOwin); 当执行SignInManager上的sMan.PasswordSignIn(…)时,无论如何,SignInManager始终在UserManager中运行依赖于可选接口的function。 以下是SignInManager类中PasswordSignInAsync方法的来源: public virtual async Task PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) { … if (await UserManager.IsLockedOutAsync(user.Id).WithCurrentCulture()) { return SignInStatus.LockedOut; } if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture()) { return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture(); } […]

如何处理一个密封在.NET库中的要扩展的类?

我正在阅读有关如何处理想要在.NET Framework库中扩展密封类的问题的地方。 这通常是一项常见且有用的任务,所以它让我思考,在这种情况下,有什么解决方案? 我相信在我读过的文章中有一种“方法”可以扩展密封类,但我现在不记得了(它不是扩展方法)。 还有别的办法吗? 谢谢

调试.NET内存泄漏 – 如何知道什么是什么?

我正在开发一个似乎存在内存泄漏的.NET应用程序。 我知道教科书的答案,事件应该取消订阅,一次性物品应该处理等… 我有一个可以重现错误的测试工具。 在某个类的终结器中,我写入控制台 public class Foo { // Ctor public Foo() { } ~public Foo() { Console.WriteLine(“Foo Finalized”); } } 在测试工具中,我创建了一个Foo实例(它反过来创建并与数百种其他类型交互)然后删除它并调用垃圾收集器。 我发现从未调用过Foo Finalizer。 我有一个类似的类与此设置,最终确定为控制测试。 所以我的问题是: 我怎样才能确定使用商业或开源工具究竟是什么引用了Foo? 我拥有dotTrace Memory Profiler的专业许可,但无法从帮助文件中找出如何使用它。 更新:我现在使用dotMemory 4.0 ,这是(好的,但无法使用的)dotTrace Memory 3.5的inheritance者。

如何从WPF中的ComboBox获取文本值?

这可能是C#101所涵盖的内容,但我无法在谷歌或堆栈溢出的任何地方找到这个问题的易于理解的答案。 有没有更好的方法从combobox中返回文本值而不使用我想出的这种糟糕的工作? private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e) { string cmbvalue = “”; cmbvalue = this.test_site.SelectedValue.ToString(); string[] cmbvalues = cmbvalue.Split(new char[] { ‘ ‘ }); MessageBox.Show(cmbvalues[1]); } 请不要强硬我,我现在真的只是拿起c#和OOP。

模型类(实体)中的dependency injection

我正在使用Entity Framework Code-First构建ASP.NET Core MVC应用程序。 我选择实现一个简单的存储库模式,为我创建的所有模型类提供基本的CRUD操作。 我选择遵循http://docs.asp.net中提供的所有建议,DI就是其中之一。 在.NET 5中,dependency injection非常适用于我们不直接实例化的任何类(例如:控制器,数据存储库,……)。 我们只需通过构造函数注入它们,并在应用程序的Startup类中注册映射: // Some repository class public class MyRepository : IMyRepository { private readonly IMyDependency _myDependency; public MyRepository(IMyDependency myDependency) { _myDependency = myDependency; } } // In startup.cs : services.AddScoped(); services.AddScoped(); 我遇到的问题是,在我的一些模型类中,我想注入一些我声明的依赖项。 但我认为我不能使用构造函数注入模式,因为模型类通常是明确地实现的,因此,我需要为自己提供依赖项,我不能。 所以我的问题是:是否有另一种方式比构造函数注入注入依赖项,以及如何? 我是在考虑属性模式或类似的东西。

获取Content-Disposition参数

如何使用WebClient获取从WebAPI控制器返回的Content-Disposition参数? WebApi控制器 [Route(“api/mycontroller/GetFile/{fileId}”)] public HttpResponseMessage GetFile(int fileId) { try { var file = GetSomeFile(fileId) HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(new MemoryStream(file)); response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(“attachment”); response.Content.Headers.ContentDisposition.FileName = file.FileOriginalName; /********* Parameter *************/ response.Content.Headers.ContentDisposition.Parameters.Add(new NameValueHeaderValue(“MyParameter”, “MyValue”)); return response; } catch(Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex); } } 客户 void DownloadFile() { WebClient wc = […]

List 没有实现SyncRoot!

每个人都使用很多List。 我需要迭代这个列表,所以我使用已知的SyncRoot模式。 最近我在这篇文章中注意到应该避免使用SyncRoot以支持“嵌入式”线程安全(每个方法将锁定私有对象而不使用SyncRoot属性暴露它)。 我能理解,部分我同意这一点。 问题是List 类没有实现SyncRoot属性,即使实现了ICollection接口,它暴露了SyncRoot属性。 我说这会使代码失效 List list = new List() list.SyncRoot; 给我以下编译器错误: 错误CS0117:’System.Collections.Generic.List’不包含’SyncRoot’的定义 …如果这是真的,我怎么能在迭代它时同步List 类型的公共属性?

在阅读记录时我应该使用SQL事务吗?

SQL事务用于插入,更新,但是它应该用于读取记录吗?

如何调试Azure Cosmos DB存储过程?

我正在使用Azure Cosmos DB,我正在使用C#(Web服务)编写客户端,我正在使用java脚本编写一些服务器端存储过程。 如何调试存储过程的代码? 谢谢, MAK

从数据表中删除重复项的最佳方法是什么?

我检查了整个网站并在网上搜索,但无法找到解决此问题的简单方法。 我有一个大约有20列和10K行的数据表。 我需要根据4个关键列删除此数据表中的重复行。 不.Net有这样的function吗? 最接近我正在寻找的函数是datatable.DefaultView.ToTable(true,要显示的列数组),但是这个函数在所有列上都是不同的。 如果有人可以帮助我,这将是很好的。 编辑:对不起,我很抱歉。 通过读取CSV文件而不是从DB创建此数据表。 因此,使用SQL查询不是一种选择。