小编now*_*ed.的帖子

C#中的枚举的Tryparse和IsDefined

所有,我要做的是:

找出字符串是否是有效的Enum元素,如果是,则返回状态.

类似的东西,如果我有一个枚举说Enum_Test,它又由红色,蓝色,绿色组成.

现在,如果蓝色是要验证的元素,我会使用类似的东西

Enum_Test evalue;
if(Enum.TryParse(string_Verify, true, out evalue))  
{
        return true;
}
Run Code Online (Sandbox Code Playgroud)

或者我有另一种选择,

if( Enum.IsDefined(typeof(Enum_Test), string_Verify))
{
        return true;
}
Run Code Online (Sandbox Code Playgroud)

上述方法的优点和缺点是什么?

.net c# enums

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

Ajax.BeginForm指定"GET"类型的发布

我的观点如下:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "DisplayPatients" }))
{
    <input type="search" name="searchTerm" />
    <input type="submit" value="Do Search" />
}  
Run Code Online (Sandbox Code Playgroud)

每当我尝试编译并查看我得到的html页面的来源时,我看到,

<form action="/" data-ajax="true" data-ajax-method="Get" data-ajax-mode="replace" data-ajax-update="#DisplayPatients" id="form0" 
   method="post">    
Run Code Online (Sandbox Code Playgroud)

但是,在我的Ajax.BeginForm中,我指定了HttpMethod = Get.尽管如此,我还是method = "post"在输出html页面中找到了.

有什么想法吗?提前致谢.

编辑:

我甚至view-source在浏览器中检查了我的页面源代码.由此可见:

<script src="/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

<form action="/" data-ajax="true" data-ajax-method="Get" data-ajax-mode="replace" data-ajax-update="#DisplayPatients" id="form0" method="post">    <input type="search" name="searchTerm" />
Run Code Online (Sandbox Code Playgroud)

(注意脚本(jquery-unobstrusive)实际上就在那里)

c# forms html5 asp.net-mvc-4 .net-4.5

3
推荐指数
1
解决办法
6972
查看次数

使用WCF客户端+ cookie进行Web服务调用

一直贯彻着Basic security AuthenticationWCF Service.

管理.ASPXCookie从Web服务获取.但是,如何将收到的cookie传递回下一个请求?

            var authClient = new MovieDbClient();
            using (new OperationContextScope(authClient.InnerChannel))
            {
                isValid = authClient.Login("userName", "passWord*");
                if (isValid)
                {
                    var response = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name];
                    sharedCookie = response.Headers["Set-Cookie"];
                }
            }
Run Code Online (Sandbox Code Playgroud)

我试图打印SharedCookie并成功.它看起来像,

".ASPXAUTH=E499CA76EAC178A96BE5CA1E314CC90E0A6F9B95AD221EF5AD7D43598E701DC034D40904DBB8ECFBFB3EA21F2597D3C8DAB9B19A0491FD5858E9F0A4B6DC6E6A980FBB4CCADE191855A029CF8236C6890BEE28665C236992632807D1021AA138; expires=Tue, 07-Jan-2014 06:22:22 GMT; path=/; HttpOnly"
Run Code Online (Sandbox Code Playgroud)

问题是how do I pass this cookie information in my next request using wCF Client - authClient

.net c# authentication cookies wcf

3
推荐指数
1
解决办法
7839
查看次数

等待事情发生 - 异步或同步模型?

我有这样的方法WaitForReaderArrival,如下所示:( 等待读者到达的所有时间运行)

        public void WaitForReaderArrival()
        {
            do
            {
                if (ReaderArrived())
                {
                    break;
                }

                System.Threading.Thread.Sleep(1000);
            } while (ReaderArrived() == false);
        }
Run Code Online (Sandbox Code Playgroud)

而我正在等待读者使用,

 await Task.Run(new Action(WaitForReaderArrival));
 if (ReaderArrived())
 {
      //Raise an ReaderArrived here!
    ..//blah blah
 }
Run Code Online (Sandbox Code Playgroud)

我的一位同事让我改变上面这句话

 WaitForReaderArrival(); 
 if (ReaderArrived())
 {
    //Raise an ReaderArrived here!
    ..//blah blah
 }
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 我上面采用的异步模型是不是真的有用?为什么她让我把这条线改为普通的同步方法对我来说仍然是一个问题.

  2. 以上是等待事情发生然后继续的正确方法?

.net c# multithreading async-await .net-4.5

3
推荐指数
1
解决办法
2101
查看次数

c#中受保护的vs受保护的内部(再次)

我正在提出一个关于protectedvs 的问题(protected internal因为我仍然不确定,并且无法控制它们).

任何帮助深表感谢.

// DLL 1

 namespace Assembly1
  {
    class class1 : class2
    {
      static void Main()
      {
         new class1().Test();
      }

      private void Test()
      {
         Console.WriteLine(this.sample);
      }
    }
 }
Run Code Online (Sandbox Code Playgroud)

// DLL 2

 namespace Assembly2
    {
        public class class2
        {
          // protected string sample = "Test";           
             protected internal string sample = "Test";

       //Same behavior when using protected and protected internal. Why ?

    }
}
Run Code Online (Sandbox Code Playgroud)

我对这两行都有相同的行为.

      // protected string sample = "Test";           
         protected internal string sample = …
Run Code Online (Sandbox Code Playgroud)

.net c# protected access-modifiers

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

为什么在.NET中使用记录器时硬编码类名?

我见过很多人写这行代码.

       var logger = log4net.LogManager.GetLogger(typeof(ServiceRequestController));
Run Code Online (Sandbox Code Playgroud)

但是,为什么要这样we hard-code the controller name.

简单写一下会更好

       var logger = log4net.LogManager.GetLogger(this.GetType());
Run Code Online (Sandbox Code Playgroud)

绝大多数人都是以第一种方式写作(他们对类名进行硬编码).但我想知道为什么?

只需一个人可以使用后一个版本吗?

或者我在这里看到的东西?

.net c# logging log4net asp.net-web-api

3
推荐指数
1
解决办法
738
查看次数

控制器动作中的长时间运行方法 - MVC

我有一个类似于以下的方法 WebAPI - MVC

public IActionResult Post(Model model)
{
      ALongRunningMethod();
      return Ok();
}
Run Code Online (Sandbox Code Playgroud)

我有两个选择.

  1. 等待方法完成.但是,如果太久了呢?API超时了吗?
  2. 使用Tasks但是返回在单独的线程中运行它Ok (200 HTTP Code) immediately?如果在长时间运行的方法中出现一些异常怎么办?

完全糊涂了.在这种情况下我该怎么办?

.net c# asp.net-mvc asp.net-web-api asp.net-web-api2

3
推荐指数
1
解决办法
6261
查看次数

WebApi 中的默认 HTTP 动词是什么?获取还是发布?

只是古玩。我正在查看互联网上的一个网络项目。

而代码流程是这样的:

[RoutePrefix("/person")]
public class PersonController : ApiController
{

    //....
    [Route("/register")]
    public IHttpACtionResult RegisterPerson(PersonDto personDto)
    {
        //....
    }
    //....
}
Run Code Online (Sandbox Code Playgroud)

注意到上面的代码了吗?没有[HttpGet()][HttpPost()]指定。然而,上面的代码在GET调用时失败,但对POST调用有效。

任何想法如何解决此方法的 HTTP-Verb ?

注意:我知道如果方法名以GETor开头POST,则相应地通过HTTPGetor调用该方法HTTPPost。但是这里的方法名称以Register....

任何想法这是如何工作的?

.net c# http asp.net-web-api

3
推荐指数
1
解决办法
6117
查看次数

按值传递接口成员

    public void MethodSample1(Itest variable)
    {
        variable.TestString = "some sample data";
        Itest var1 = variable;
        Console.WriteLine(variable.TestString);
        MethodSample2(variable);
        Console.WriteLine(variable.TestString);
        Console.WriteLine(var1.TestString);

    }

    public void MethodSample2(Itest variable)
    {
        variable.TestString = "testdata";
    }

    public interface Itest
    {
      string TestString { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

预计两个控制台输出行都打印"一些样本数据",但似乎TestString是被新值覆盖了?是不是"默认情况下在C#中所有的值都按值传递?".

总之,如何保存"TestString"的值MethodSample1

(我遇到了这个问题,因为我的所有项目都基于单个界面)

即使保留了价值,它确实反映了!奇怪!

.net c# .net-4.0 visual-studio-2010

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

查找添加到数组的运行总和时为 1 的最小数

从给定的整数数组和值“x”开始。从左到右计算 x 加上每个数组元素的运行总和。运行总和绝不能低于 1。确定 x 的最小值。

例如。arr = [-2, 3, 1, -5]。

如果 x = 4,则得到以下结果:

Running     
sum       arr[i]
-----     -----
4          -2
2           3
5           1
6          -5
1
Run Code Online (Sandbox Code Playgroud)

任何想法如何找到这个。我尝试从“0”开始并慢慢增加直到达到 1,但我想这是一种错误的方法。

algorithm math

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