相关疑难解决方法(0)

如何检测ExpandoObject上是否存在属性?

在javascript中,您可以使用undefined关键字检测属性是否已定义:

if( typeof data.myProperty == "undefined" ) ...
Run Code Online (Sandbox Code Playgroud)

你如何在C#中使用带有ExpandoObject和不带异常的动态关键字来做到这一点?

c# dynamic expandoobject

182
推荐指数
5
解决办法
8万
查看次数

检测对象是否为ValueTuple

我有一个用例,我需要检查一个值是否是C#7 ValueTuple,如果是,则循环遍历每个项目.我试着用检查obj is ValueTupleobj is (object, object)但是这两个的返回false.我发现我可以使用obj.GetType().Name并检查它是否以它开头,"ValueTuple"但这对我来说似乎很蹩脚.任何替代品都会受到欢迎.

我也有获得每个项目的问题.我尝试Item1使用此处找到的解决方案:如何检查c#中动态匿名类型上是否存在属性?((dynamic)obj).GetType().GetProperty("Item1")返回null.我希望我能做一件事while来获得每件物品.但这不起作用.我如何获得每件商品?

更新 - 更多代码

if (item is ValueTuple) //this does not work, but I can do a GetType and check the name
{
    object tupleValue;
    int nth = 1;
    while ((tupleValue = ((dynamic)item).GetType().GetProperty($"Item{nth}")) != null && //this does not work
        nth <= 8)      
    {
        nth++;
        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# valuetuple

10
推荐指数
3
解决办法
1700
查看次数

如何对返回匿名对象的ASP.NET Core MVC控制器进行单元测试?

我无法对返回匿名对象的ASP.NET Core MVC控制器进行单元测试.单元测试在单独的项目中设置,并直接从主项目调用控制器方法.

控制器方法返回IActionResult但通常这些OkObjectResultBadRequestObjectResult对象被转换为具有适当HTTP状态代码的JSON响应.匿名对象作为对象的构造函数参数传递,ObjectResult正是这些我试图对(可访问的ObjectResult.Value)进行断言.

我发现这个问题(我如何访问asp.net 5中的内部)有一个答案,说使用动态和添加

[assembly: InternalsVisibleTo("Namespace")]
Run Code Online (Sandbox Code Playgroud)

到AssemblyInfo.cs允许测试项目访问匿名对象的内部对象属性.但是,最新版本的ASP.NET Core MVC没有AssemblyInfo.cs,并且在链接问题的答案中建议添加一个也不起作用.

是否现在有一个不同的位置来添加InternalsVisibleTo或我错过了什么?

c# unit-testing anonymous-types asp.net-core-mvc

9
推荐指数
1
解决办法
4232
查看次数

访问匿名类型变量

我有这个代码:

object test = new {a = "3", b = "4"};
Console.WriteLine(test); //I put a breakpoint here
Run Code Online (Sandbox Code Playgroud)

如何访问对象的a属性test?当我放一个断点时,visual studio可以看到这个对象的变量......为什么我不能?我真的需要访问这些.

c# anonymous-types

6
推荐指数
2
解决办法
230
查看次数