小编DLe*_*Leh的帖子

有没有办法检查int是否是C#中的合法枚举?

我已经阅读了一些SO帖子,似乎缺少最基本的操作.

public enum LoggingLevel
{
    Off = 0,
    Error = 1,
    Warning = 2,
    Info = 3,
    Debug = 4,
    Trace = 5
};

if (s == "LogLevel")
{
    _log.LogLevel = (LoggingLevel)Convert.ToInt32("78");
    _log.LogLevel = (LoggingLevel)Enum.Parse(typeof(LoggingLevel), "78");
    _log.WriteDebug(_log.LogLevel.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这没有例外,它很乐意存储78.有没有办法验证进入枚举的值?

c# enums

146
推荐指数
6
解决办法
5万
查看次数

VS2015构建失败,没有动态的错误消息

我正在编写一个返回JSON的代码的单元测试.它返回的类型是匿名类型,所以我想验证它上面的值我只是将对象转换为a dynamic来做我的断言.

但是,当我这样做时,我的构建失败但我没有任何错误消息.我能够在新的单元测试项目中使用非常简单的代码重现这一点:

[TestMethod]
public void TestMethod1()
{
    var obj = new { someValue = true };

    dynamic asDynamic = obj;

    Assert.IsTrue(asDynamic.someValue);
}
Run Code Online (Sandbox Code Playgroud)

请参阅下面的构建失败的屏幕截图

建立失败

当我注释掉断言时,构建成功:

在没有断言的情况下构建成功

相比之下,我在LinqPad 5 beta(使用Roslyn编译器)中运行了以下代码并且没有任何问题:

var obj = new { someValue = true };
dynamic asDynamic = obj;
Console.WriteLine((asDynamic.someValue == true).ToString());
Run Code Online (Sandbox Code Playgroud)

真正

这里发生了什么?由于错误没有显示我不能说,如果我用dynamic,不正确,或者如果它不能找到使用过载IsTrue()的,因为dynamic,或者如果这是在编译器中的错误(虽然我很怀疑这个,我没有任何证据证明我的代码有问题).

关于过载问题,我试过Assert.IsTrue((bool)asDynamic.someValue);但是构建仍然失败,仍然没有错误消息.

根据Per @ RonBeyer的评论,我也尝试过更多的演员,如下所示无济于事:

    dynamic asDynamic = (dynamic)obj;
    Assert.IsTrue(((dynamic)asDynamic).someValue);

    Assert.IsTrue((bool)asDynamic.somevalue);
Run Code Online (Sandbox Code Playgroud)

经过仔细检查,我发现输出窗口中列出了一个错误:

c:...\DynamicBuildFailTest\UnitTest1.cs(16,33,16,42):错误CS0656:缺少编译器所需的成员'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

好的,VS2013更善于报告错误,我会根据这些搜索:

在此输入图像描述

好的,添加对Microsoft.CSharp的引用修复了构建错误,但我会将此问题保持打开状态,因为它可能是VS2015的一个问题(在我看来)应该解决.

c# roslyn visual-studio-2015

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

Visual Studio 2015不是语法突出显示剃刀或智能感知

我在VS2015 RC中的Razor视图没有显示C#代码的正确着色.我的项目在VS2013中运行良好,但它不是在2015年,而且它没有给我任何关于C#代码的Intellisense.解决方案构建,网站运行正常.

我尝试了以下无济于事

  • 禁用所有Visual Studio扩展
  • 删除我的.suo文件
  • 删除项目并将其重新添加到解决方案中

我怎样才能解决这个问题?

例:

c# asp.net asp.net-mvc razor visual-studio-2015

121
推荐指数
7
解决办法
6万
查看次数

不引人注目的验证不适用于动态内容

我在尝试使用不显眼的jquery验证来处理通过AJAX调用动态加载的局部视图时遇到问题.

我花了几天时间试图让这段代码运转起来没有运气.

这是视图:

@model MvcApplication2.Models.test

@using (Html.BeginForm())
{
 @Html.ValidationSummary(true);
 <div id="res"></div>
 <input id="submit" type="submit" value="submit" />
}
Run Code Online (Sandbox Code Playgroud)

部分视图:

@model MvcApplication2.Models.test

@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);

<script type="text/javascript" >
  $.validator.unobtrusive.parse(document);
</script>
Run Code Online (Sandbox Code Playgroud)

该模型:

  public class test
  {
    [Required(ErrorMessage= "required field")]
    public int MyProperty { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

控制者:

    public ActionResult GetView()
    {
        return PartialView("Test");
    }
Run Code Online (Sandbox Code Playgroud)

最后,javascript:

$(doument).ready(function () {
$.ajax({
    url: '/test/getview',
    success: function (res) {

        $("#res").html(res);
        $.validator.unobtrusive.parse($("#res"));
    }
});

$("#submit").click(function () {
    if ($("form").valid()) {
        alert('valid');
        return true;
    } …
Run Code Online (Sandbox Code Playgroud)

unobtrusive-validation asp.net-mvc-4

93
推荐指数
4
解决办法
6万
查看次数

.NET6 和日期时间问题。无法将 Kind=UTC 的 DateTime 写入 PostgreSQL 类型“不带时区的时间戳”

我有共同的问题。

无法将 Kind=UTC 的 DateTime 写入 PostgreSQL 类型“不带时区的时间戳”

我想启用旧版时间戳行为,如下所示: https: //github.com/npgsql/doc/blob/main/conceptual/Npgsql/types/datetime.md/

public MyDbContext(DbContextOptions<MyDbContext> contextOptions) : base(contextOptions)
        {
            AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
            AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
        }
Run Code Online (Sandbox Code Playgroud)

但不起作用。我仍然遇到同样的错误。

我做错了什么。为什么遗留行为不起作用?

c# npgsql .net-6.0

87
推荐指数
8
解决办法
12万
查看次数

Visual Studio 2015-如何禁用"基于您的项目,我们已经确定了您可能会发现有用的扩展"消息?

自从Visual Studio 2015的最新更新以来,我在打开.html.cshtml文件时收到此消息.单击"不再询问"仅禁用此功能,直到VS重新启动.如何永久关闭它?

在此输入图像描述

html asp.net-mvc visual-studio visual-studio-2015

82
推荐指数
2
解决办法
2426
查看次数

Node.js - 使用async lib - async.foreach和object

我正在使用节点async lib - https://github.com/caolan/async#forEach,并希望迭代一个对象并打印出它的索引键.一旦完成,我想执行回调.

这是我到目前为止,但'iterating done'从未见过:

    async.forEach(Object.keys(dataObj), function (err, callback){ 
        console.log('*****');

    }, function() {
        console.log('iterating done');
    });  
Run Code Online (Sandbox Code Playgroud)
  1. 为什么不调用最终函数?

  2. 如何打印对象索引键?

loops asynchronous object node.js node-async

52
推荐指数
1
解决办法
7万
查看次数

合并匿名类型

如何合并两个匿名类型,以便结果包含两个源对象的属性?

var source1 = new
{
    foo = "foo",
    bar = "bar"
}

var source2 = new
{
    baz = "baz"
}

var merged = Merge(source1, source2) // <-- here's where the magic should happen

// merged: 
// {
//      foo = "foo",
//      bar = "bar",
//      baz = "baz"
// }
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types

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

为什么创建一个内联初始化的数组这么慢?

为什么内联数组初始化比迭代这样慢得多?我运行这个程序来比较它们,单个初始化比使用for循环这样做要花费很多倍.

这是我写的LinqPad测试程序.

var iterations = 100000000;
var length = 4;

{
    var timer = System.Diagnostics.Stopwatch.StartNew();

    for(int i = 0; i < iterations; i++){
        var arr = new int[] { 1, 2, 3, 4 };
    }
    timer.Stop();
    "Array- Single Init".Dump();
    timer.Elapsed.Dump();
}

{
    var timer = System.Diagnostics.Stopwatch.StartNew();

    for(int i = 0; i < iterations; i++){
        var arr = new int[length];
        for(int j = 0; j < length; j++){
            arr[j] = j;
        }
    }
    timer.Stop();
    "Array- Iterative".Dump();
    timer.Elapsed.Dump(); …
Run Code Online (Sandbox Code Playgroud)

.net c# arrays performance initialization

35
推荐指数
2
解决办法
1995
查看次数

如何使用iTextSharp阅读PDF表格数据?

我试图找出是否可以使用iTextSharp阅读PDF表格数据(表格填写并随表格保存).我怎样才能做到这一点?

c# forms pdf itext

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