如何防止表单对象在关闭时处理?

我使用的是MDIParent表格。 当我关闭它的孩子时,孩子的对象处理。 有没有办法将子可见性设置为false而不是处置?

Generic Linq to Entitiesfilter方法,它接受要过滤的过滤条件和属性

我已经在SO中查看了许多通用的linq过滤问题及其答案,但它们都没有满足我的需求,所以我想我应该创建一个问题。 我已经创建了许多我称之为“filter提供程序”的类,一个用于我的模型中的每个实体类,以便为我的应用程序提供简单的搜索。 我不想进入像Lucene.Net这样的更高级的解决方案,因为具有匹配分数的基本过滤就足够了。 在这些提供者类的每个提供者类中,有多种方法将接收过滤术语和查询特定属性,并根据属性的相关性返回每个匹配的分数。 大多数方法会一次过滤多个属性,但不是全部。 以下是其中两种方法: private IQueryable MatchHighRelevanceFields(string searchTerm, IQueryable retailers) { var results = retailers.Where(r => (r.CompanyName != null && r.CompanyName.ToUpper().Contains(searchTerm)) || (r.TradingName != null && r.TradingName.ToUpper().Contains(searchTerm)) ); return results; } private IQueryable MatchMediumRelevanceFields(string searchTerm, IQueryable retailers) { var results = retailers.Where(r => (r.Address.Street != null && r.Address.Street.ToUpper().Contains(searchTerm)) || (r.Address.Complement != null && […]

如何在完成View和ViewModel时删除事件处理程序,而不是模型

在我的应用程序中,我经常创建新的视图和ViewModel,但持久化相同的模型。 例如,我可能会在主窗口中显示项目列表的简单视图,并有另一个窗口,其中包含任何特定项目的更多详细信息。 可以随时打开和关闭详细信息窗口,也可以同时打开列表中不同项目的多个窗口。 因此,给定模型对象可以有多个ViewModel,并且需要使用其他位置的更改进行更新。 (我在我的模型上使用了INotifyPropertyChanged 。)当我完成它时,我希望摆脱ViewModels,即,当详细信息窗口关闭时。 public DetailViewModel(MyDetailModel detailModel) { // Retain the Detail Model this.model = detailModel; // Handle changes to the Model not coming from this ViewModel this.model.PropertyChanged += model_PropertyChanged; // Potential leak? } 据我所知,事件处理程序将使Model保留对ViewModel的引用,并防止它被垃圾收集。 1)这是对的吗? 如何判断这些引用是否仍然存在? 2)我应该如何确定不再需要ViewModel并取消订阅事件?

如果URL包含片段,为什么Url.IsLocalUrl返回false?

我正在使用Url.IsLocalUrl来检查传递给我的身份validation操作的返回URL是否是本地的。 只要URL中没有片段,它就可以正常工作。 也就是说, /t/test-team-3/tasks/lists/15返回true,但/t/test-team-3/tasks#/lists/15返回false。 这背后的原因是什么? 是否有一些模糊的安全问题可能会在片段中出现,或者我可以在检查URL是否为本地时安全地忽略该片段?

AutoMapper AssertConfigurationIsValid是否足以确保良好的映射?

我想问你一个关于AutoMapper的问题。 我们正在对我们的映射进行unit testing: var dtoFiltrePersonne = new DtoFiltrePersonne { Prop1 = “Test”, Prop2 = 1234 }; Mapper.CreateMap(); var filtrePersonne = DtoAutoMappeur.Instance.MapFromDtoToEntity(dtoFiltrePersonne); Assert.AreEqual(dtoFiltrePersonne.Prop1, filtrePersonne.Prop1); Assert.AreEqual(dtoFiltrePersonne.Prop2, filtrePersonne.Prop2); 我想知道这个unit testing是否提供相同的覆盖范围? Mapper.CreateMap(); AutoMapper.AssertConfigurationIsValid() 我查看了AutoMapper配置文档 ,对我来说不是很清楚。 我是否需要对每个映射进行unit testing或只使用AssertConfigurationIsValid方法?

使用Newtonsoft Json.Net反序列化为IEnumerable类

我有一个项目,目前正在使用Json.Net为Json反序列化类,如下所示: public class Foo { public Guid FooGuid { get; set; } public string Name { get; set; } public List Bars { get; set; } } public class Bar { public Guid BarGuid { get; set; } public string Description { get; set; } } 到目前为止它工作正常。 为了使迭代更简单,我做了Foo类实现IEnumerable如下所示: public class Foo : IEnumerable { public […]

Json.NET,如何自定义序列化以插入JSON属性

我一直无法找到JsonConvert.WriteJson的合理实现,它允许我在序列化特定类型时插入JSON属性。 我的所有尝试都导致“JsonSerializationException:使用类型XXX检测到自引用循环”。 关于我正在尝试解决的问题的更多背景:我使用JSON作为配置文件格式,并且我使用JsonConverter来控制我的配置类型的类型解析,序列化和反序列化。 我不想使用$type属性,而是想使用更有意义的JSON值来解析正确的类型。 在我的简化示例中,这里有一些JSON文本: { “Target”: “B”, “Id”: “foo” } 其中JSON属性”Target”: “B”用于确定此对象应序列化为B 。 考虑到这个简单的例子,这种设计似乎并不那么引人注目,但它确实使配置文件格式更加有用。 我还希望配置文件是可循环访问的。 我有反序列化的工作,我无法工作的是序列化案例。 我的问题的根源是我找不到使用标准JSON序列化逻辑的JsonConverter.WriteJson的实现,并且不会抛出“自引用循环”exception。 这是我的实现: public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { JProperty typeHintProperty = TypeHintPropertyForType(value.GetType()); //BUG: JsonSerializationException : Self referencing loop detected with type ‘B’. Path ”. // Same error occurs whether I use the serializer parameter […]

UseSqlServer方法缺少MVC 6

我正在尝试在MVC 6中实现Entity Framework 7,并在此页面上说它要做 services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(Configuration[“Data:DefaultConnection:ConnectionString”])); 但对我来说, UseSqlServer方法不可见? 有谁知道如何让它可见? 或者这是配置entity framework的旧方法? 我的startup.cs文件看起来像这样 using FluentValidation; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.Framework.ConfigurationModel; using Microsoft.Framework.DependencyInjection; namespace me.namespace.project { public class Startup { public static IConfiguration Configuration { get; set; } public Startup(IHostingEnvironment env) { // Setup configuration sources. Configuration = new Configuration() .AddJsonFile(“config.json”) .AddEnvironmentVariables(); } […]

使用特定的HttpMessageHandler注入单实例HttpClient

作为我正在开发的ASP.Net核心项目的一部分,我需要从WebApi中与许多不同的基于Rest的API端点进行通信。 为了实现这一点,我使用了许多服务类,每个服务类都实例化一个静态HttpClient 。 基本上,我为WebApi连接的每个基于Rest的端点都有一个服务类。 下面是一个如何在每个服务类中实例化静态HttpClient的示例。 private static HttpClient _client = new HttpClient() { BaseAddress = new Uri(“http://endpointurlexample”), }; 虽然上述方法运行良好,但它不允许对使用HttpClient的服务类进行有效的unit testing。 为了让我能够进行unit testing,我有一个假的HttpMessageHandler ,我想在我的unit testing中用于HttpClient ,而HttpClient是如上所述实例化的,但是我无法将假的HttpMessageHandler作为unit testing的一部分。 HttpClient在服务类中保持整个应用程序中的单个实例(每个端点一个实例)的最佳方法是什么,但允许在unit testing期间应用不同的HttpMessageHandler ? 我想到的一种方法是不使用静态字段来保存服务类中的HttpClient ,而是允许使用单例生命周期通过构造函数注入来注入它,这将允许我使用所需的HttpMessageHandler指定HttpClient在unit testing期间,我想到的另一个选项是使用HttpClient工厂类,它在静态字段中实例化HttpClient ,然后可以通过将HttpClient工厂注入服务类来检索,再次允许使用相关的HttpMessageHandler进行不同的实现在unit testing中返回。 以上都没有感到特别干净,感觉必须有更好的方法吗? 有任何问题,请告诉我。

OPOS PosExplorer.GetDevice()在Windows服务中执行时返回null

下面的代码片段使用OPOS .NET打开POS打印机进行打印。 它作为独立应用程序的一部分执行时工作正常。 当由Windows服务执行时,对GetDevice(…)的调用始终返回null。 explorer = new PosExplorer(); device_info = explorer.GetDevice(DeviceType.PosPrinter, PrinterName); printer = (PosPrinter)explorer.CreateInstance(device_info); printer.Open(); printer.Claim(1000); printer.DeviceEnabled = true; 打印机恰好是Epson TM-U220B。 在服务访问POS设备之前是否存在需要克服的安全问题? 任何人都可以推荐有关使用OPOS .NET的Windows服务开发的良好信息来源吗?