有没有办法使用JSON.NET指定序列化JSON对象中的字段顺序?
指定单个字段始终首先出现就足够了.
看起来像window.postMessage的目的是允许在不同域上托管的窗口/框架之间进行安全通信,但实际上它似乎并不允许在Chrome中使用.
这是场景:
src
域B *)<iframe>绝对是在域B的上下文中,我已经确认<iframe>中的嵌入式javascript正确执行并postMessage
使用正确的值进行调用.
我在Chrome中收到此错误消息:
无法发布消息到一个.收件人有产地乙.
这是在A页面上注册消息事件监听器的代码:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Run Code Online (Sandbox Code Playgroud)
我也尝试过调用window.postMessage(some_data, '*')
,但所有这一切都是为了抑制错误.
我只是忽略了这一点,是window.postMessage(...)不是为了这个吗?或者我只是做得非常糟糕?
*Mime-type text/html,它必须保留.
我有一个IntPtr封装在一个非托管/管理边界上,对应一个Icon Handle.通过FromHandle()方法将它转换为Icon是微不足道的,直到最近才令人满意.
基本上,我已经有足够的线程怪异了,因为我一直在玩MTA/STA舞蹈以保持托管的WinForm不会破坏应用程序的主要(WPF-tastic)UI太脆弱而无法坚持.所以WinForm必须要去.
那么,我怎样才能获得Icon的ImageSource版本?
注意,我尝试过ImageSourceConverter无济于事.
顺便说一下,我可以获得一些但不是所有涉及的图标的底层资源,它们通常存在于我的应用程序的程序集之外(事实上,它们通常存在于非托管的dll中).
我有一个类似自定义索引器的类
public string this[VehicleProperty property]
{
// Code
}
Run Code Online (Sandbox Code Playgroud)
如何在typeof(MyClass).GetProperties()的结果中识别自定义索引器?
我知道泛型是由JIT编译的(就像其他所有东西一样),与编译代码时生成的模板形成对比.
问题是可以使用反射在运行时创建新的泛型类型.
这当然会影响通用的约束.哪个已经通过了语义解析器.
有人能解释一下这是如何处理的吗?究竟发生了什么?
(代码生成和语义检查)
我正在开始对Visual-Studio 2008方式进行单元测试,我想知道class
为了测试目的,完成跨装配访问的最佳方法是什么.
基本上,我在一个解决方案中有两个项目:
MyProject中的所有内容当前都具有默认的可访问性,如果我没记错,这意味着一切都是有效的internal
.我主要是想在这个class
级别进行测试,但是有一些delegates
涉及.
将来某个时候可能会有一个外部API,但我大约有20%的功能完整(至少在纸面上)并且我非常谨慎地在这个未经测试的核心上层叠更多代码.因此,我想在应用程序完成足够传统(读取:坏和/或懒惰)功能测试之前完成一些测试,并且肯定在版本n + 1外部API启动之前完成.
除了直接的答案,我们将非常感谢解决方案的一个例子.
公平的警告,这可能有点深奥和棘手.
鉴于从CIL流中提取的MemberRef(下面有更多解释),您如何确定它指向的哪个字段(如果有的FieldInfo
话)(并得到它)?
根据ECMA 335标准,MemberRef是一个元数据标记,基本上是表中的查找,可以指向字段元数据标记或方法元数据标记.从0x0A开始的任何元数据标记都是MemberRef.
我之前没有遇到其中的一个,但它们似乎并不罕见.我能够通过在方法中使用以下匿名类型来生成一个:
new
{
A = new DateTime(1234, 5, 6, 7, 8, 9, DateTimeKind.Utc),
B = (DateTime?)null
}
Run Code Online (Sandbox Code Playgroud)
当我通过反射获取方法体(获取PropertyInfo,获取GetMethod,获取MethodBody,然后最终得到IL)A
的get方法是:
[2, 123, 79, 0, 0, 10, 42]
Run Code Online (Sandbox Code Playgroud)
哪个转换为:
ldarg.0
ldfld 0x0A00004F
ret
Run Code Online (Sandbox Code Playgroud)
如果我反思并获得支持字段(依赖于名称相似性来选择<A>i__Field
,没有任何算法)我看到MetadataToken是0x04000056
.
请注意,生成的令牌可能在编译之间有所不同.
以0x04开头的标记是一个字段:
大多数情况下(对于我的有限测试中的所有非匿名对象,实际上)IL包含字段元数据令牌.这很容易变成一个FieldInfo
via Module.ResolveField(int)
,弄清楚如何处理一个MemberRef会让我感到沮丧.
循环使用Module上的其他ResolveXXX方法,唯一可以对MemberRef执行任何操作的方法是ResolveSignature
.在上面的MemberRef上运行时,它返回一个数组[6, 19, 0]
.我真的不知道该怎么做.
我正在处理的代码尚未完成,但是公开的.运行此测试可以看到错误,导致在此行上的字段查找失败时抛出异常.请注意,测试本身尚未完成,预计它不会成功,但也不应该死在那里.
任何人都知道如何制作该签名,或者FieldInfo
从MemberRef …
这有点疯狂.
这是我们的OpenID提供商的表格:
<form method="post" action="/affiliate/form/login/submit?affId=7" autocomplete="off">
<table class="position-table">
<tr>
<td class="input-td">
<input class="framed-text-field" type="text" name="email" id="email" value="" maxlength="100" />
<span class="form-help">name@example.com</span>
</td>
<td class="input-td">
<input class="framed-text-field" type="password" name="password" id="password" />
<span class="form-help">Password</span>
</td>
<td></td>
<td class="input-td">
<input type="submit" class="affiliate-button" value="Sign In" />
</td>
</tr>
</table>
<input type="hidden" id="fkey" name="fkey" value="REDACTED" />
</form>
Run Code Online (Sandbox Code Playgroud)
此表单是/affiliate/form/login
iframe中托管的页面(at )的一部分.iframe通过HTTPS(HTTP上的主机页面)提供.您可以/users/login
使用隐身/私人浏览/色情模式浏览器窗口查看此操作.
所以这是问题,定期(但不一致)用户将GET而不是POST到此URL.这是一个荒谬的低发生率,迄今为止影响的用户总数不到50个.
我很想知道dev/null
这些错误(没有行动方法等等),但......
这些看起来像真正的用户:广泛的IP,各种有效的用户代理和可信的时间.令人沮丧的是,相同的用户有时会稍后成功地发布相同的表单.
可能导致这种情况的任何想法?
我已经拥有并丢弃的想法:
我有一些普通的类,有一堆简单的属性(简单的{get; set;}
声明).所有属性都可以为空(或等效地,引用类型).
例如:
class POCO
{
int? Field1 { get; set; }
string Field2 { get; set; }
... etc ...
}
Run Code Online (Sandbox Code Playgroud)
我有一个场景,我正在逐步构建这些POCO,最后我想让其中一个包含所有非空字段.
一些说明性代码:
POCO o1 = LoadFields1To3();
POCO o2 = LoadFields4To5();
POCO o3 = LoadFields6To9();
... etc ...
Run Code Online (Sandbox Code Playgroud)
我们处于这种情况是因为某些字段是从SQL加载的(有时是不同的查询),而有些是从内存数据结构中加载的.我在这里重新使用POCO类型来避免一堆其他无意义的类(静态类型对于Dapper来说非常有用,而且一般来说).
我正在寻找的是将这些对象的属性合并为具有非null属性的单个属性的好方法.
就像是:
POCO final = o1.UnionProperties(o2).UnionProperties(o3) // and so on
Run Code Online (Sandbox Code Playgroud)
我能够保证在多个对象上没有字段为非null.虽然我假设一个解决方案会采用最左边的非空字段,但实际上并不是必需的.
我知道我可以写一些反射代码来做到这一点,但它有点讨厌和缓慢.
这确实需要通用,因为虽然我从不打算合并不同类型的对象,但是这种方法适用的类型非常多.
我想知道是否有一些更聪明的方式,也许 AB用动态?
c# ×7
.net ×2
reflection ×2
browser ×1
cil ×1
disk ×1
filesystems ×1
generics ×1
html ×1
html5 ×1
javascript ×1
jit ×1
json ×1
json.net ×1
unit-testing ×1
windows ×1
winforms ×1
wpf ×1
xss ×1