Tag: dynamic编程

检查ViewBag是否有一个属性,有条件地注入JavaScript

考虑这个简单的控制器: Porduct product = new Product(){ // Creating a product object; }; try { productManager.SaveProduct(product); return RedirectToAction("List"); } catch (Exception ex) { ViewBag.ErrorMessage = ex.Message; return View("Create", product); } 现在,在我的Create视图中,我想检查ViewBag对象,看它是否有Error属性。 如果它有错误属性,我需要注入一些JavaScript的页面,以显示错误信息给我的用户。 我创build了一个扩展方法来检查这个: public static bool Has (this object obj, string propertyName) { Type type = obj.GetType(); return type.GetProperty(propertyName) != null; } 然后,在“ Create视图中,我编写了这一行代码: @if (ViewBag.Has("Error")) […]

在Scala中有没有一种通用的方法来记忆?

我想记住这个: def fib(n: Int) = if(n <= 1) 1 else fib(n-1) + fib(n-2) println(fib(100)) // times out 所以我写了这个,这令人惊讶的编译和工作(我感到惊讶,因为fib引用本身的声明): case class Memo[A,B](f: A => B) extends (A => B) { private val cache = mutable.Map.empty[A, B] def apply(x: A) = cache getOrElseUpdate (x, f(x)) } val fib: Memo[Int, BigInt] = Memo { case 0 => 0 […]

Newtonsoft JSON – dynamic对象

我正在使用Newtonsoft JSON库对传入的原始JSON执行dynamic反序列化,并发现了一些我无法解释的东西。 起点是以下JSONstring: { "task": { "dueDate": "2012-12-03T00:00:00" } } 那里没有太复杂的… 在代码中,我是这样做的: var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson); DateTime dueDate = dyn.task.dueDate.Value; 这段代码已经存在好几个月了,可以正常工作,但是在最近的testing版本中,我们发现了以下错误: “Newtonsoft.Json.Linq.JObject”不包含“任务”的定义 堆栈跟踪:在CallSite.Target(Closure,CallSite,对象)在System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0,TRet](CallSite站点,T0 arg0) 现在这是奇怪的地方,如果我改变上面的代码,一切都开始工作了: DateTime dueDate = dyn.task.dueDate.Value; 至 DateTime dueDate = dyn["task"]["dueDate"].Value; 所以,虽然这是“固定的”,但我不明白为什么这个问题会解决,可能的原因是什么。 有没有人有任何想法

有没有任何.NET CLR / DLR ECMAScript的实现?

有没有人知道ECMAScript的实现(我没有蒸发器)实施的.NET CLR / DLR ? 理想情况下,犀牛是Java的东西。 在.NET Framework / Mono Framework上运行的一个可靠的Rhino端口将是完美的。 我只看到了一些提到的项目,但从来没有见过任何亮相,或者实际上我曾经能够运行脚本的东西。 这就是我已经知道的: MSScriptControl ActiveX控件 :AFAIK,这是微软最后一个真正符合ECMAScript标准的工具(运行JScr​​ipt 5.7)。 我已经与MSScriptControl集成,但不认为COM互操作是这个问题的答案。 x64是这个选项的杀手。 JScript.NET :我不计算JScript.NET,因为它永远不能成功parsing我的真实脚本。 它似乎有closures的麻烦。 托pipeJScript :听起来像我想要的,但似乎是死在水中。 这是DLR的一个主要的示例实施,但是随后与SilverLight纠缠在一起,似乎自2007年以来已经成为优先事项。关于这一情况的可靠来源将是有帮助的。 MyJScript :构build为DLR的教程实现。 任何人都知道这是多么完整的实施? Jint :.NET的JavaScript解释器。 目前还不支持柯里或try – finally 。 .NET的RemObjects脚本 :一个有趣的竞争者仍在工作。 我对他们的市场营销感到困惑,因为这听起来可能最终是合适的。 如果有人知道更多,这也会有所帮助。 V8 for .NET :如果有人将V8移植到.NET,这将会很棒。 据我所知,在这方面也没有太大的努力。 链接是从一个托pipe的C ++包装器调用它的想法。 对于后台,我希望能够从.NET中执行JavaScript; 即将一组脚本加载到上下文中,并调用该上下文并检索执行结果。 目前我通过繁琐的COM Interop跳过使用MSScriptControl。 COM的不一致使得部署和确保一致的执行非常困难。 我希望能够从.NET内部执行相当复杂的JavaScripttesting工具。 这不是用于创build用户macros或简单的小脚本; 我需要一个像Rhino这样的真正的JavaScript环境。 如果实现在CLR(而不是COM)上运行,这对于当前的一些问题确实有帮助。

如何find一个string的不同子序列的数量?

这是另一个问题 ,如何find一个string的不同子序列的数量? 例如, input AAA ABCDEFG CODECRAFT 产量 4 128 496 我怎么解决这个问题 ?

强制GCC通知共享库中未定义的引用

我有一个与另一个(第三方)共享库链接的共享库。 我的共享库然后在我的应用程序中使用dlopen加载。 所有这一切工作正常(假设文件是​​在正确的path等)。 现在,问题是,我甚至不需要指定链接我的库时链接到第三方共享库。 GCC接受它而不报告有关未定义参考的错误。 所以,这个问题; 我如何强制GCC通知我未定义的引用 ? 如果我更改我的库是(暂时)一个可执行文件,我得到未定义的引用(当不提供库到链接器)。 (如果我指定,工作正常。) 即,完成以下工作: g++ -fPIC -shared -o libb.so bo g++ -fPIC -shared -o liba.so ao g++ -o a.exe a.cpp 如果第二行不发出错误,第三行则报告未定义的引用。 示例代码: 啊: class a { public: void foobar(); }; a.cpp: #include "ah" #include "bh" void a::foobar() { b myB; myB.foobar(); } int main() { a myA; myA.foobar(); […]

dynamic图标使用图像操作类似于Gmail添加一个计数

我试图弄清楚看源代码,但我无法弄清楚。 我想知道如何使一个像Gmail一样的dynamic图标。 任何想法如何做到这一点?

dynamic创build一个<Type>的对象

我在我的数据库中有一个表,用来pipe理我的应用程序之间的关系。 它的本质是非常基本的 – parentType,parentId,childType,childId …都是整数。 我之前已经完成了这个设置,但是当我尝试链接6个不同的表格时,我使用了开关/表格设置。 现在我有30个表,我试图做到这一点,我希望能够做到这一点,而不必写在我的switch命令30个案例条目。 有没有一种方法可以使用string引用.Net类? 我知道这是无效的(因为我已经尝试了几个变化): Type t = Type.GetType("WebCore.Models.Page"); object page = new t(); 我知道如何获得一个对象的types,但我如何使用它在飞行中创build一个新的对象?

dynamic_cast的性能?

在阅读这个问题之前: 这个问题不是关于如何使用dynamic_cast有用的。 它只是关于它的performance。 我最近开发了一个dynamic_cast被广泛使用的devise。 当与同事讨论时,几乎每个人都说dynamic_cast不应该被使用,因为它的performance不好(这些都是不同背景的同事,在某些情况下彼此不认识,我在一家大公司工作) 我决定testing这种方法的性能,而不是仅仅相信它们。 以下代码被使用: ptime firstValue( microsec_clock::local_time() ); ChildObject* castedObject = dynamic_cast<ChildObject*>(parentObject); ptime secondValue( microsec_clock::local_time() ); time_duration diff = secondValue – firstValue; std::cout << "Cast1 lasts:\t" << diff.fractional_seconds() << " microsec" << std::endl; 上面的代码使用来自Linux上boost::date_time方法来获取可用的值。 我在一次执行中完成了3个dynamic_cast ,测量它们的代码是相同的。 1次执行的结果如下: Cast1持续:74微秒 Cast2持续:2微秒 Cast3持续:1微秒 第一个演员总是拿着74-111微秒,下面的演员在同样的执行下拿了1-3微秒。 所以最后我的问题是: dynamic_cast真的performance不好吗? 根据testing结果它不是。 我的testing代码是否正确? 为什么这么多的开发人员认为,如果不是这样,速度会变慢呢?

Expression.Lambda和查询生成在运行时,最简单的“Where”示例

我试图在运行时生成一个简单的Lambdaexpression式,没有运气…像这样的东西: var result = queryableData.Where(item => item.Name == "Soap") 这是我的例子类和夹具查询: public class Item { public int Id { get; set; } public string Name { get; set; } } IQueryable<Item> queryableData = …; 然后我在运行时生成一个lambdaexpression式, 正确的代码如下 : //"item" in "item =>…" var item = Expression .Parameter(typeof(Item), "item"); //property of my item, this is "item.Name" var prop […]