C# – 在没有用户确认框的情况下将reg文件导入注册表

C#winforms – 如何将reg文件导入注册表? 以下代码向用户显示确认框(是/否)。 Process regeditProcess = Process.Start(“key.reg”, “/S /q”); // not working regeditProcess.WaitForExit();

使用AppDomain加载/卸载外部程序集

我的方案如下: 创建新的AppDomain 将一些组件加载到其中 加载dll做一些魔法 卸载AppDomain以释放内存和已加载的库 下面是我正在尝试使用的代码 class Program { static void Main(string[] args) { Evidence e = new Evidence(AppDomain.CurrentDomain.Evidence); AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation; Console.WriteLine(“Creating new AppDomain”); AppDomain newDomain = AppDomain.CreateDomain(“newDomain”, e, setup); string fullName = Assembly.GetExecutingAssembly().FullName; Type loaderType = typeof(AssemblyLoader); var loader = (AssemblyLoader)newDomain.CreateInstanceFrom(loaderType.Assembly.Location, loaderType.FullName).Unwrap(); Console.WriteLine(“Loading assembly”); Assembly asm = loader.LoadAssembly(“library.dll”); Console.WriteLine(“Creating instance of Class1”); […]

在ConcurrentDictionary AddOrUpdate中为更新部分添加的内容

我试图使用Dictionary重新编写一些代码来使用ConcurrentDictionary。 我已经回顾了一些示例,但我仍然无法实现AddOrUpdate函数。 这是原始代码: dynamic a = HttpContext; Dictionary userDic = this.HttpContext.Application[“UserSessionList”] as Dictionary; if (userDic != null) { if (useDic.ContainsKey(authUser.UserId)) { userDic.Remove(authUser.UserId); } } else { userDic = new Dictionary(); } userDic.Add(authUser.UserId, a.Session.SessionID.ToString()); this.HttpContext.Application[“UserDic”] = userDic; 我不知道要为更新部分添加什么: userDic.AddOrUpdate(authUser.UserId, a.Session.SessionID.ToString(), /*** what to add here? ***/); 任何指针将不胜感激。

如何在C#静态和非静态方法之间做出决定?

[编辑] 我的原始问题是“为什么要在静态和非静态之间做出决定?两者都是一样的……” 不幸的是,它被编辑成一个C#特定的问题,我真的想避免。 所以,让我做一些补充: 当我说接口时,我不是指C#-keyword接口,而是我理解的东西,比如C ++接口:一组定义良好的函数来操作我的对象。 当说削弱我的界面时,我的意思是我有不同的function(静态/非静态)做同样的事情。 当有不同的function来做同样的事情时,我的界面不再明确定义。 所以,正如看门人Bob发布的那样,我可以实现一个Validate()函数 Document.Validate(myDocumentObject); 但是也 myConcreteDocumentObject.Validate(); 要回到我的Copy() – 示例,可以实现Copy()之类的 myConcreteDocument.Copy(toPath); 但是也 Document.Copy(myConcreteDocumentObject, toPath) 要么 Document.Copy(fromPath, toPath) 当我想到一个包含属于我的Document的所有文件的文件夹时(在这种情况下,我不依赖于具体的实例 – 但我依赖于其他东西:))。 一般来说,我说的是静态方法而不是静态类(对不起,如果我忘了扩展)。 但正如Anton Gogolev所说,我认为我的文档课不是一个很好的例子而且没有很好的设计,所以我想我必须看看单一责任原则。 我还可以实现某种与DocumentClass一起运行的ManagerClass: 例如: myDocumentManagerObject.Copy(myConcreteDocumentObject, toPath); 要么 myDocumentManagerObject.Copy(myConcreteDocumentObject, toPath); 但是,如果我参考方法1)我倾向于创建自己执行任务的对象,而不是使用我的DocumentObject执行某些操作的其他对象(DocumentManager)。 (我希望这不会采取关于OOP的宗教讨论的方向;)。) [/编辑] 旧版: 起初这似乎是一个非常基本的问题,比如“何时使用静态方法,何时不使用”,但这是我偶尔遇到的问题(我很难描述真正的问题是什么;也许只是为了得到原因(不)使用1)或为什么(不)使用2))。 (虽然我使用的是C#-Syntax,但这不是C#限制的问题) 在OOP中,有两种处理对象的方法(以及其他方法): 1)如果我想要我的对象做某事,我只是告诉他这样做: myConcreteObject.DoSomething(); 这就像和一个对象交谈一样。 2)或者如果你是静态方法的粉丝: ObjectClass.JustDoIt(); 在某种程度上,我认为静态函数只是“感觉”更好。 所以我倾向于经常使用静态方法(独立于具体实例 – 独立总是好事)。 因此,在设计课程时,我经常要决定是采用方法1)还是采用方法2): 想象一下,你有一个“文档”类,它应该代表一个应该保存到数据库中的文档: 一个文件 由一个或多个来自文件系统的图像文件组成(这些文件成为单个文档页面) […]

为Web Api 2和OWIN令牌身份validation启用CORS

我有一个ASP.NET MVC 5 webproject(localhost:81),它使用Knockoutjs从我的WebApi 2项目(localhost:82)调用函数,以便在我启用CORS的两个项目之间进行通信。 到目前为止,一切都有效,直到我尝试对WebApi实现OWIN令牌认证。 要在WebApi上使用/ token端点,我还需要在端点上启用CORS,但经过几个小时的尝试和搜索解决方案后,它仍在运行,并且api / token仍然会导致: XMLHttpRequest cannot load http://localhost:82/token. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. public void Configuration(IAppBuilder app) { app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); TokenConfig.ConfigureOAuth(app); … } TokenConfig public static void ConfigureOAuth(IAppBuilder app) { app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext(AppUserManager.Create); OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { AllowInsecureHttp = true, TokenEndpointPath = new PathString(“/token”), AccessTokenExpireTimeSpan […]

如何传播WPF数据绑定期间发生的错误和exception?

我经常发现我在应用程序中意外破坏了数据绑定。 通过重命名属性而不是在XAML中重命名属性,或者由于某种原因抛出exception的属性。 默认情况下,数据绑定错误会记录到调试输出中,并且会捕获并抑制抛出的exception。 是否有一种简单的方法可以在记录调试输出后抛出exception? 我想尽快知道数据绑定是否被破坏(理想情况下是在自动化测试中捡起),并且没有冒险在人类测试之前可能会被忽视的可能性。

相同类型的Object的InvalidCastException – 自定义控件加载

我有一个非常有线的错误,我的一个自定义控件似乎是创建两个编译文件,当我尝试使用LoadControl()动态加载它时只是失败,因为无法将一个转换为另一个 – 即使它们正是相同。 我写的消息看到的一切都是一样的,只是改变了编译过的dll。 System.Web.HttpUnhandledException (0x80004005): Exception of type ‘System.Web.HttpUnhandledException’ was thrown. —> System.InvalidCastException: [A]ASP.Modules_OneProduct_MedioumImage cannot be cast to [B]ASP.Modules_OneProduct_MedioumImage. Type A originates from ‘App_Web_kg4bazz1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ in the context ‘Default’ at location ‘C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\80ed7513\10eb08d9\App_Web_kg4bazz1.dll’. Type B originates from ‘App_Web_oneproduct_mediumimage.ascx.d1003923.4xoxco7b, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ in the context ‘Default’ at location ‘C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\80ed7513\10eb08d9\App_Web_oneproduct_mediumimage.ascx.d1003923.4xoxco7b.dll’. 代码 […]

如何将OData查询与DTO映射到另一个实体?

我的问题与此问题非常相似: 如何将针对DTO的OData查询映射到EF实体? 我有一个简单的设置来测试ASP.NET Web API OData V4 $filterfunction。 我想做的是“别名”ProductDTO的一些属性以匹配Product实体的属性。 用户将使用以下请求调用ProductsController: GET产品?$ filter = DisplayName eq’test’ 产品类: public class Product { public int Id { get; set; } public string Name { get; set; } public int Level { get; set; } public Product() { } } ProductDTO类: public class ProductDTO { public int Id { […]

c#检查打印机状态

在我的应用程序(Windows 7,VS2010)中,我必须在成功打印图像后减少信用计数器。 无论如何,在开始整个过程​​之前,我想了解打印机状态,以便在纸张,卡纸等方面提醒用户。 现在,环顾四周我发现了几个使用Windows WMI的例子,但是……从来没有用过。 例如,使用THIS代码段,如果我取出纸张,打开盖子,打印机状态也随时可用…关闭打印机。 现在打印机状态总是很好,我正在办公室测试打印机在家里舒适地关闭。 让我用炸药引爆设备以获得打印机错误状态? 这是我用过的代码 ManagementObjectCollection MgmtCollection; ManagementObjectSearcher MgmtSearcher; //Perform the search for printers and return the listing as a collection MgmtSearcher = new ManagementObjectSearcher(“Select * from Win32_Printer”); MgmtCollection = MgmtSearcher.Get(); foreach (ManagementObject objWMI in MgmtCollection) { string name = objWMI[“Name”].ToString().ToLower(); if (name.Equals(printerName.ToLower())) { int state = Int32.Parse(objWMI[“ExtendedPrinterStatus”].ToString()); if ((state == […]

.NET 4,AllowPartiallyTrustedCallers属性和SecurityCritical等安全标记

我是新的C#,我正在尝试了解.NET-4的新安全function 。 为了填写一些细节,我目前正在尝试更新AutofacContrib.Moq以使用最新的Moq。 对于.NET-3.5及以下版本,我没有遇到任何问题。 但在.NET-4中,安全限制会导致许多安全exception。 Moq有一个单独的方法GetObjectData ,它标有SecurityCritical属性。 AutofacContrib.Moq具有AllowPartiallyTrustedCallers属性集,该属性是exception的来源。 似乎不是添加SecurityRules属性为1的SecurityRules属性,而是最好删除AllowPartiallyTrustedCallers属性。 我相信这会默认使用程序集SecurityTransparent,这可能是不够的(尽管AutofacContrib.Moqunit testing通过)。 我目前的主要问题是,针对.NET-4的程序集是否应该使用AllowPartiallyTrustedCallers属性? 但是,鉴于我绝对不了解所有内容,在使用安全标记的程序集时应该考虑哪些细节? 我是否需要在其使用的地方使用安全属性明确标记我的程序集,直接或间接地标记为SecurityCritical ?