Tag: c ++

AutoMapper定义映射级别

public class Foo { public string Baz { get; set; } public List Bars { get; set; } } 当我映射上面的类时,有没有什么方法可以定义我想让automapper映射对象有多深? 我所追求的一些伪代码: var mapped = Mapper.Map(foo, opt => { levels: 0 }); // result = { Baz: “” } var mapped = Mapper.Map(foo, opt => { levels: 1 }); // result = { Baz: “”, Bars: […]

Windows Phone 7是否支持动态关键字?

Silverlight 4增加了对dynamic关键字的支持。 Windows Phone 7支持是否也支持它? 我收到编译错误,无法在网上找到任何来源,说明是否支持这种方式。 编译错误: 名称空间“System”中不存在类型或命名空间名称“Dynamic”(您是否缺少程序集引用?)

在仅由构造函数调用的私有方法中赋值readonly变量

C#编译器给了我以下错误 CS0191:无法分配只读字段(构造函数或变量初始化程序除外) 我是否必须将代码(在我的私有函数中)移动到构造函数中? 这听起来很尴尬。 请注意,私有方法仅用于构造函数调用。 我希望我可以使用某种属性来标记相应的方法。

.NET互操作来回复制数组数据,还是固定数组?

我有这个COM方法签名,在C#中声明: void Next(ref int pcch, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] char[] pchText); 我称之为: int cch = 100; var buff = new char[cch]; com.Next(ref cch, buff); .NET互操作层是否首先将整个数组复制到临时的非托管内存缓冲区,然后将其复制回来? 或者数组是否自动固定并通过引用传递? 为了尝试,我在COM对象(C ++)中做到了这一点: *pcch = 1; pchText[0] = L’A’; pchText[1] = L’\x38F’; // ‘Ώ’ 当我在返回时检查C#中的buff[1]时,我确实得到’Ώ’ 。 但我不认为这是一个强有力的证据,certificatearrays固定,而不是来回复制。

代码隐藏中的WinRT / Metro动画

以下代码在Silverlight中正常工作: private void Button_Click_1(object sender, RoutedEventArgs e) { Storyboard storyboard = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation(); doubleAnimation.From = 50; doubleAnimation.To = 100; doubleAnimation.RepeatBehavior = RepeatBehavior.Forever; doubleAnimation.AutoReverse = true; doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(200)); storyboard.Children.Add(doubleAnimation); Storyboard.SetTarget(doubleAnimation, button1); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(“Width”)); storyboard.Begin(); } 在WinRT / Metro中,它需要一个小的改动才能编译: Storyboard.SetTargetProperty(doubleAnimation, “Width”); 但是当你运行它时,没有任何反应。 如果您将属性从“宽度”更改为“不透明度”(也可以更改从= 0和To = 1)。 “宽度”有什么问题?

如何在C#中实现BN_num_bytes()(和BN_num_bits())?

我将这一行从C ++移植到C#,我不是一个经验丰富的C ++程序员: unsigned int nSize = BN_num_bytes(this); 在.NET中我使用的是System.Numerics.BigInteger BigInteger num = originalBigNumber; byte[] numAsBytes = num.ToByteArray(); uint compactBitsRepresentation = 0; uint size2 = (uint)numAsBytes.Length; 我认为内部运作方式存在根本区别,因为如果BigInt等于: 来源的unit testing结果不匹配: 0 任何负数 0x00123456 我对BN_num_bytes ( 编辑:评论只是告诉我它是BN_num_bits的一个宏) 。 题 你会validation这些关于代码的猜测: 我需要移植BN_num_bytes这是一个宏((BN_num_bits(bn)+7)/8) (谢谢@WhozCraig) 我需要移植BN_num_bits ,它是floor(log2(w))+1 然后,如果存在不计算前导和尾随字节的可能性,那么Big / Little端机器上会发生什么? 有关系吗? 基于Security.StackExchange上的这些答案,以及我的应用程序不是性能关键,我可以使用.NET中的默认实现,而不是使用可能已经实现类似解决方法的备用库。 编辑:到目前为止,我的实现看起来像这样,但我不确定评论中提到的“LookupTable”是什么。 private static int BN_num_bytes(byte[] numAsBytes) { int bits […]

JQuery + Asp.Net MVC,传递浮点数

我最近和MVC一起工作,在尝试使用ajax向我的控制器发送请求时遇到了一个奇怪的问题。 我正在使用直接来自MVC的JQuery(版本1.3.2),我正在尝试发送这样的ajax请求: $.post(“Home/OpenTrade”, { price: 1.5 }, function() { }, “json”); 我也尝试过parseFloat(“1.5”)而不是1.5 。 当我尝试在控制器中使用时接收此值 [AcceptVerbs( HttpVerbs.Post)] public void OpenTrade(float? price) 我的价格总是空的。 如果我省略? 根本没有调用控制器(这并不奇怪),我尝试过使用decimal和double类型。 此外,当我发送整数数据时,此function有效(如果我发送1此控制器被调用,并且float? price被正确填充)。 我错过了什么,还是一个错误? 广告。 我可以收到价格作为字符串,然后手动解析,但我不喜欢这个解决方案,因为它不优雅,它打击使用像MVC这样的框架为我做这个的整个目的。 编辑和答案:使用Joel的建议,我创建了一个Model Binder,我将发布,也许有人会使用它: class DoubleModelBinder : IModelBinder { #region IModelBinder Members public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { string numStr = bindingContext.ValueProvider[bindingContext.ModelName].AttemptedValue; double res; if (!double.TryParse(numStr, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, […]

具有匿名委托的Dispatcher.Invoke适用于Silverlight但不适用于WPF

在Silverlight 4中,我有一个自定义服务类,它具有异步的Completed事件。 在Completed事件中,我获取返回的数据并通过以下方式调用populate方法: private void service_Completed(object sender, CompletedEventArgs args) { Dispatcher.BeginInvoke(() => populateInbox(args.Jobs)); } private void populateInbox(List jobs) { inbox.DataContext = jobs; } BeginInvoke在SL4中工作,但是当我将它移植到WPF时,我收到以下错误: 无法将lambda表达式转换为类型’System.Delegate’,因为它不是委托类型 我尝试将其更改为内联,匿名,参与代表: Dispatcher.BeginInvoke(delegate(List jobs) { inbox.DataContext = jobs; }); 但是,这会产生相同的编译时错误。 知道如何在WPF中使用它吗? 重构使用BackgroundWorker对我来说不是一个选择。

如何在包装包含向量的模板类时让SWIG应用模板?

我试图使用SWIG来包装(在C#中)一些包含模板类的c ++代码,该模板类本身包含了一个std::vector 。 我已经在互联网上看到了关于如何为矢量类型声明模板的各种参考,但是无法使用额外的抽象层。 这就是我在interface.i文件中所做的事情,例如: // interface.i file %module myNamespaceWrapper %{ #include “myVector.h” %} %include “myVector.h” %include “std_string.i” %include “std_vector.i” namespace std { %template(vector_MyType) vector; %template(vector_Int) vector; } namespace myNamespace { %template(myVectorMyType) myVector; %template(myVectorInt) myVector; } 虽然这似乎可以自己正确地创建相应的C#类型,但是我试图定义的std :: vector模板不会应用于其他在内部使用它们的类,通过头文件包含它们。 为了告诉你我的意思,有一个c ++类,如: // myVector.h namespace myNamespace { template class myVector { private : std::vector vect; public […]

覆盖基类中定义的属性

我有类层次结构是这样的情况, +—————+ | UIElement | |—————| +———————-+ | … | | My Windows Application | SomePropert{} | |———————-| | |<—+ |+——————–+| | | | ||MyUserControl || +—————+ | ||——————–|| +————–+—–+ || || |FrameWorkElement | |+——————–+| |——————–| |//Want to use | | … |<-+ |// SomeProperty; | +——————–+ | | | +———–+-+ | | |Control | […]