小编Ian*_*ley的帖子

使用反射访问对象中的Struct的字段

我正在尝试使用反射(最终在编译时未知)object,包括struct.我已经到了,TypedReference.MakeTypedReference但我已经撞墙了.

这是我的班级和结构

public class MyObject
{
    public int Id;
    public Money Amount; 
}

public struct Money
{
    public int Vaule;
    public string Code;
}
Run Code Online (Sandbox Code Playgroud)

这是我如何尝试使用反射在MyObject中设置"数量"的"代码".正如我上面提到的,我正在寻找一种在编译时不了解这些类型的解决方案(这太容易了!)

这是我到目前为止的代码(我使用[0],[1]来使代码更简单)

var obj = new MyObject() { Id = 1 };
obj.Amount.Vaule = 10;
obj.Amount.Code = "ABC";

FieldInfo[] objFields = obj.GetType().GetFields();
FieldInfo[] moneyFields = objFields[1].GetValue(obj).GetType().GetFields();

List<FieldInfo> fields = new List<FieldInfo>() { objFields[1] };
fields.AddRange( moneyFields );

TypedReference typeRef = TypedReference.MakeTypedReference( 
                           objFields[1].GetValue( obj ), fields.ToArray() );

moneyFields[1].SetValueDirect( typeRef, "XXX" ); …
Run Code Online (Sandbox Code Playgroud)

c# reflection typedreference

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

Enumerable.Repeat with Union和Take不返回'Take'值

非常简单的问题.我有一个值列表,我想用空值填充,以便我总是返回X个项目.

List<int> list = new List<int>() { 10, 20, 30 };

IEnumerable<int> values = list
     .OrderByDescending( i => i )
     .Union( Enumerable.Repeat( 0 , 5 ) );

foreach (var item in values.Take(5))
   Console.Write( item + " ");
Run Code Online (Sandbox Code Playgroud)

我希望输出像"30 20 10 0 0"但令人惊讶的是我只得到"30 20 10 0".

foreach (var i in Enumerable.Repeat( 0, 5 ).Take(3))
    Console.Write( i + " " );
Run Code Online (Sandbox Code Playgroud)

此代码将返回"0 0 0".同样地," list.Take(3)"返回"30 20 10".

c# linq ienumerable

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

TeamIn中的NUnit结果文件

使用TeamCity 8,如何为NUnit运行生成/查找结果文件?

我们目前还运行MsTest,它生成一个TRX文件.然后,我们使用TRX-> HTML报告工具将报告传递到管理食物链.我们如何在TeamCity中对NUnit做同样的事情?

现在我想我需要将NUnit作为CommandLine构建步骤执行,但考虑到有一个NUnit加载项并且MsTest加载项为我提供了"结果文件:"选项,这似乎很疯狂

teamcity nunit

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

标签 统计

c# ×2

ienumerable ×1

linq ×1

nunit ×1

reflection ×1

teamcity ×1

typedreference ×1