小编Che*_*eso的帖子

在C#中,标记类静态的目的是什么?

在C#中,标记类静态的目的是什么?

如果我有一个只有静态方法的类,我可以将该类标记为静态.为什么我要将类标记为静态?如果所有方法都是静态的,并且我打算永远不会添加非静态方法,我是否不想将类标记为静态?

我环顾四周,看到了一些类似的问题,但没有一个像这样.

.net c# class-design

24
推荐指数
4
解决办法
1815
查看次数

如何确定每用户状态的存储位置?注册?应用程序数据?隔离存储?

什么时候应该将Windows注册表用于每用户状态,何时应该使用文件系统,特别是用户的AppData文件夹?(例如,C:\ Users\USERNAME\AppData).隔离存储在哪里?

是否有一个相当坚定的规则,或者它只是一个模糊的事情,如"使用注册表,直到它成为太多的数据存储在注册表中".或者"使用你想要的任何东西."

是否存在影响决策的Windows徽标要求?

如果我使用AppData目录,如何在Local,Roaming和LocalLow之间进行选择?

编辑:我刚刚注意到这些类似的问题:

我将总结回复.

c# windows registry wpf winforms

23
推荐指数
2
解决办法
9961
查看次数

使用Emacs编辑包含CSS,javascript和HTML的网页时,人们使用什么模式?

通常代码类似于:

<html>
  <head>
    <style type="text/css">
       body { font-size:12pt; font-family: Arial;}
        ....
    </style>
    <script type="text/javascript" src="jquery.1.3.2js"></script>
    <script type="text/javascript">
    <!--
        $(document).ready(function(){
          ...
        });
        ...
    -->
    </script>
    <meta ... />
  </head>
  <body>
    <div>
      <p>
       ....
      </p>
      ...
    </div>
    ....
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我喜欢javascript模式的合成文字突出显示和缩进.同样适用于HTML的sgml-mode.此外,我在打开的标签上自动完成.Css模式并不是那么重要,所以它不是一个优先事项.

这是3种不同的语言和3种模式.现在我在编辑不同部分时手动交换模式.这有点工作.

谁有更好的方法?

html javascript css emacs

23
推荐指数
3
解决办法
4887
查看次数

如何在不使用Visual Studio的情况下使用ASP.NET MVC实现站点?

我见过没有Visual Studio的ASP.NET MVC,它问, 是否有可能在不使用Visual Studio的情况下生成基于ASP.NET MVC的网站?

接受的答案是 肯定的.

好的,下一个问题: 怎么样?


这是一个类比.如果我想创建一个ASP.NET Webforms页面,我会加载我最喜欢的文本编辑器,创建一个名为Something.aspx的文件.然后我插入到该文件中,一些样板:

<%@ Page Language="C#"
  Debug="true"
  Trace="false"
  Src="Sourcefile.cs"
  Inherits="My.Namespace.ContentsPage"
%>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Title goes here </title>
    <link rel="stylesheet" type="text/css" href="css/style.css"></link>

    <style type="text/css">
      #elementid {
          font-size: 9pt;
          color: Navy;
         ... more css ...
      }
    </style>

    <script type="text/javascript" language='javascript'>

      // insert javascript here.

    </script>

  </head>

  <body>
      <asp:Literal Id='Holder' runat='server'/>
      <br/>
      <div id='msgs'></div>
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

然后我还创建了Sourcefile.cs文件:

namespace My.Namespace
{
    using System;
    using System.Web;
    using System.Xml; …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

23
推荐指数
1
解决办法
5789
查看次数

什么是IE9的Javascript引擎的ProgId或CLSID(代号为"Chakra")

使用.NET,我可以编写一个托管脚本引擎的应用程序,该脚本引擎符合Microsoft的IActiveScript约定.这包括来自Microsoft的JScript和VBScript,以及PerlScript和RubyScript,我不知道第三方还有什么.

在代码中执行此操作的方法是这样的:

    Type engine = Type.GetTypeFromProgID(progId, true);
    _engine = Activator.CreateInstance(engine) as IActiveScript;
Run Code Online (Sandbox Code Playgroud)

其中progId可以采用Javascript,JScript,ECMAScript,VBScript等值.运行cscript.exe时可以执行类似的操作,在命令行中使用该//E选项指定progId .例如,这个命令:

cscript.exe  <file>  //e:JScript
Run Code Online (Sandbox Code Playgroud)

..将通过JScript引擎运行指定的文件,无论其扩展名如何.

在我的机器上,如果我查看HKLM\SW\Classes\,三个progIds {Javascript,JScript,ECMAScript}都指向相同的CLSID,我猜这是JScript 5.8脚本引擎:{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}

是否有ProgId或CLSID我可以指定运行IE9的Javascript引擎,又称"Chakra"?

IE9的引擎是否仍然被IActiveScript加载?
Microsoft的文档表明它确实如此,但没有指定ProgId或CLSID.

.net javascript wsh iactivescript chakra

23
推荐指数
2
解决办法
7069
查看次数

如何让System.Net.Http.HttpClient不遵循302重定向?

使用NuGet的HttpClient.

该应用程序使用client.PostAsync()发送帖子.我希望它不要遵循302重定向.

怎么样?

我想我可以AllowAutoRedirect按照这个答案中的描述进行设置.

但是如何HttpWebRequest在PostAsync()调用中使用?

c# dotnet-httpclient

23
推荐指数
2
解决办法
1万
查看次数

使用Rfc2898DeriveBytes在C#中实现PBKDF2

伙计们,我正在尝试在C#中实现一个创建WPA共享密钥的PBKDF2函数.我在这里找到了一些:http://msdn.microsoft.com/en-us/magazine/cc163913.aspx似乎产生了一个有效的结果,但是它的一个字节太短......而且错误的PSK值.

为了测试输出,我将其与此进行比较:http://www.xs4all.nl/~rjoris/wpapsk.htmlhttp://anandam.name/pbkdf2/

我确实找到了一种方法来使用C#内置库来调用Rfc2898DeriveBytes.使用这个,我得到一个有效的输出:

Rfc2898DeriveBytes k3 = new Rfc2898DeriveBytes(pwd1, salt1, 4096);
byte[] answers = k3.GetBytes(32);
Run Code Online (Sandbox Code Playgroud)

现在,我使用Rfc2898DeriveBytes的一个限制是"盐"必须是8个八位字节长.如果它更短,则Rfc2898DeriveBytes会抛出异常.我想我所要做的就是将盐(如果它更短)填充到8个字节,我会很好.但不是!我已经尝试了几乎所有填充与较短盐的组合,但我不能复制我从上面这两个网站得到的结果.

那么底线是,这是否意味着Rfc2898DeriveBytes只是不能使用短于8个字节的源盐?如果是这样,有没有人知道我可以使用哪些C#代码为WPA预共享密钥实现PBKDF2?

c# pbkdf2 rfc2898

22
推荐指数
3
解决办法
2万
查看次数

C#是否支持使用静态局部变量?

相关: 如何在Java中创建静态局部变量?


如果这是重复,请原谅; 我很确定以前会问这个问题,我看了一下,但没有找到傻瓜.

我可以在C#中创建一个静态局部变量吗?如果是这样,怎么样?

我有一个很少使用的静态私有方法.静态方法使用正则表达式,我想初始化一次,并且仅在必要时.

在C中,我可以使用本地静态变量来完成此操作.我可以用C#做​​这个吗?

当我尝试编译此代码时:

    private static string AppendCopyToFileName(string f)
    {
        static System.Text.RegularExpressions.Regex re =
            new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");
    }
Run Code Online (Sandbox Code Playgroud)

......它给了我一个错误:

错误CS0106:修饰符'static'对此项无效


如果没有本地静态变量,我想我可以通过创建一个小的新私有静态类来近似我想要的,并将方法和变量(字段)插入到类中.像这样:

public class MyClass 
{
    ...
    private static class Helper
    {
        private static readonly System.Text.RegularExpressions.Regex re =
            new System.Text.RegularExpressions.Regex("\\(copy (\\d+)\\)$");

        internal static string AppendCopyToFileName(string f)
        {
            // use re here...
        }
    }

    // example of using the helper
    private static void Foo() 
    {
       if (File.Exists(name)) 
       {
           // helper gets JIT'd first time through this …
Run Code Online (Sandbox Code Playgroud)

c# static

21
推荐指数
5
解决办法
2万
查看次数

如何在页面上只修补一个*自动完成实例?

这个答案 - jQueryUI:我如何自定义格式化Autocomplete插件结果? - 描述如何对jqueryUI自动完成小部件进行monkeypatch,以便以特定方式显示内容.它使用的方法是替换上的函数$.ui.autocomplete.prototype.

这意味着所有自动完成小部件都将获得此修补程序.

有没有办法只为一个输入元素修补自动完成小部件?它是什么?

当我检查时$('$input').autocomplete,我没有看到任何自动完成文件(_renderItem,_renderMenu,_search等).

jquery-ui autocomplete jquery-ui-autocomplete

21
推荐指数
2
解决办法
8076
查看次数

是否可以构建一个双击时不显示控制台窗口的控制台应用程序?

相关:
我应该在我的应用程序中包含命令行模式吗?
如何获取父进程标准输出?
控制台应用程序可以检测它是否已从资源管理器运行?

我想构建一个控制台应用程序,通常从命令行运行.

但是,当它从资源管理器中双击(而不是从cmd.exe提示符运行)时,我希望该程序不显示控制台窗口.

我想避免这个:

替代文字http://i36.tinypic.com/1088p5s.jpg

可能吗?

编辑我想另一种问题是,程序是否有可能知道它是如何被调用的 - 无论是通过双击还是通过命令行

我在Windows上使用.NET.

编辑2:这篇Old New Thing博客文章中我学到了一些好东西.这就是我现在所知道的......

在Windows中,EXE文件标记为GUI或非GUI.使用csc.exe,可以使用/target:winexe或选择它/target:exe.在执行流程中的第一条指令之前,Windows内核会设置执行环境.此时,如果EXE标记为GUI,则内核将进程的stdin/stdout设置为NULL,如果非GUI(命令行),则内核创建控制台并将进程的stdin/stdout设置为安慰.

启动进程时,如果没有stdin/stdout(== /target:winexe),则立即返回调用.因此,从cmd.exe启动gui应用程序,您将立即返回cmd提示符.如果存在stdin/stdout,并且从cmd.exe运行,则父cmd.exe将等待进程退出.

"立即返回"很重要,因为如果您编写GUI应用程序以附加到其父控制台,您将能够执行console.writeline等.但cmd.exe提示是活动的.用户可以键入新命令,启动新进程等.换句话说,从winexe,只需附加到父控制台,AttachConsole(-1)不会"变成"控制台应用程序.


此时我认为允许应用程序使用控制台的唯一方法是从cmd.exe调用它,而不是在双击时使用它,就是将exe定义为常规控制台exe(/target:exe),并且如果合适,在启动时隐藏窗口.您仍然会暂时显示控制台窗口.

我仍然没有想过如何知道它是从explorer或cmd.exe启动的,但我越来越近了..


解答

无法构建不显示控制台窗口的控制台应用程序.

是可能的构建非常迅速隐藏其窗口控制台应用程序,但不能如此之快,这是因为如果从来没有出现的窗口.

现在,为了确定是否从资源管理器启动了一个控制台应用程序,有些人建议查看它正在运行的控制台
(来自mgb的答案知识库文章99115):

  int left = Console.CursorLeft;
  int top = Console.CursorTop;
  bool ProcessWasRunFromExplorer = (left==0 && top==0);
Run Code Online (Sandbox Code Playgroud)

这告诉您该进程是否在其自己的控制台中启动,而不是它是否是资源管理器.在资源管理器中双击可以执行此操作,但是应用程序内的Start.Process()也会执行相同的操作.

如果要以不同方式处理这些情况,请使用此方法来了解父进程的名称:

  System.Console.WriteLine("Process id: {0}", Process.GetCurrentProcess().Id);
  string name = Process.GetCurrentProcess().ProcessName ;
  System.Console.WriteLine("Process name: {0}", …
Run Code Online (Sandbox Code Playgroud)

.net windows console console-application

19
推荐指数
3
解决办法
8026
查看次数