问题标签 [impromptu-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2889 浏览

c# - 将静态类型对象扩展为动态对象

我正在dynamic为我的视图模型使用对象,因为我发现使用 Automapper 之类的东西不必要的开销,并且发现这种方法更加灵活和轻量级。我正在使用即兴界面中的构建器,如下所示:

在某些情况下,“扩展”实际对象会比一一重新映射所有属性更好,类似于在 JavaScript 中使用jQuery.extend()

这应该可以通过ExpandoObject结合反射和迭代所有成员来实现,但我想知道是否有更清洁/更整洁的解决方案。

0 投票
2 回答
980 浏览

c#-4.0 - 使用 ImpromptuInterface 时如何解决此枚举转换问题?

给定以下代码:

以下测试失败:

有没有办法正确解决这个问题?

0 投票
1 回答
253 浏览

wpf - 如何使用 ImpromptuInterface.MVVM 进行多个事件绑定?

使用 ImpromptuInterface.MVVM 绑定到单个事件非常简单:

如何绑定到同一个 DataGrid 控件中的第二个事件?

0 投票
1 回答
519 浏览

c# - Call a private member of a base class with ImpromptuInterface

I have a framework that allows me to access the state and methods of objects in my project with keyboard. It relies heavily on ImpromptuInterface, which is great and fast and flexible and stuff.

For example, I invoke methods with Impromptu.InvokeMember(myObject, methodName, castParameters). It worked great for public and private members, but when I try to call a private member of myObject base class, I get Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'MyType.MyMethod(Something)' is inaccessible due to its protection level.

The simplest code that reveals the problem:

I understand why there is such a problem and I can see some possible resolutions, like looking for the class, where the method is defined and trying to cast my object to that class, but that's quite troublesome.

Is there any simple solution, preferably based strictly on Impromptu?

0 投票
1 回答
700 浏览

c# - 使用基于接口作为合同的对象属性从/映射到字典的最佳方法是什么?

我正在开发一个非常动态的 Silverlight 应用程序,其中视图模型是动态模型。WCF 服务返回包含足够信息(TableName 属性和包含实体的 Dictionary[] 数组)的 Response 对象。

所以,假设我有一个实体(字典)和一些视图模型实例,它是任何类型的对象。字典的键作为属性名称,显然,该值将用于设置视图模型中的属性值。我需要将此字典中的值映射到动态视图模型的值,反之亦然。为了对这个映射有一些限制,我创建了接口来验证字典的值,所以如果值属性名在合同中定义,我只获取/设置值。

我知道鸭子类型、动态代理、对象映射器,并且知道如何使用反射。

我开始寻找一些可以使这项任务变得简单的工具或框架。所以我找到了Impromptu-Interface。我正在尝试使用 Impromptu-interface 来做到这一点:

奇迹般有效。

和反向映射:

问题是:有没有更好的方法来做到这一点?

0 投票
1 回答
346 浏览

json.net - 用于 json.net 反序列化的自定义即兴对象

我在一个作业上玩即兴界面并遇到以下问题

https://code.google.com/p/impromptu-interface/issues/detail?id=17

该问题被标记为“不会修复”,并且在评论中作者说可以通过实现自定义即兴对象来修复它。

有人有这种实现的样本吗?或者知道这个问题的另一种解决方案?

0 投票
1 回答
848 浏览

c# - 即兴:无法加载类型,因为它试图将类实现为接口

在堆栈中某人的推荐下,我刚刚开始使用 Impromptu。

我相信我已经正确实现了它,但我收到错误“无法加载类型,因为它试图将类实现为接口”

在我的可移植类库中,我有以下模型:

我在我的 MVC 项目中创建了以下 IClass:

在我的控制器中,我将以下内容发送到视图:

但我收到错误“无法加载类型,因为它试图将类实现为接口”

我无法弄清楚我做错了什么。有人可以帮忙吗?

谢谢

0 投票
1 回答
646 浏览

c# - 使用 Impromptu-Interface 获取属性的类型

我有一个复杂的解决方案,其中部分问题是从 HTML 表单到一系列数据库支持且相对复杂的实体框架 DbSet 的模型绑定。

问题是,我们有一个 EF 定义的域模型,它封装了我们需要了解的关于我们正在捕获的数据的所有信息;但是项目的管理员希望能够制作一个类似问卷的表格,允许他们选择该域的任何成员。

无论如何,这不是问题本身,因为它在很大程度上是有效的,至少它对于简单的成员、字符串、日期、布尔值等非常有效。棘手的部分是管理具有多个字段的成员,例如地址对象。

一个解决方案是使用反射来设置我们从表单发布中收到的域的值,但这当然有它的开销,我被迫找到一种更好的做事方式;在我的研究中,我发现了“即兴界面”项目,它承诺比反射提高很多速度,但我有一个简单的问题。

获取和设置属性都很好:

但我需要做的是找到属性的类型。到目前为止,我仍然只能看到如何使用反射:

那么:Impromptu 可以做到这一点吗?我需要将该属性转换为我的接口,因为它具有将 html 表单帖子转换为我的 EF 对象的成员。

0 投票
2 回答
2638 浏览

c# - 将动态对象映射到接口并注册到 IoC

我正在尝试为将注入到由我的 IoC 容器(在本例中为 Unity)创建的对象中的接口注册动态实现。

这是我正在采用的高级方法:

  1. 从 JSON 文件动态加载属性列表。我目前正在为此使用JSON.NET
  2. 将该动态对象映射到接口。我目前正在为此使用Impromptu 。
  3. 使用我的 IoC 容器为接口类型注册该动态对象

这是应该“理论上”工作的代码:

一切都很好,直到最后一行。Unity 不喜欢我没有给它一个实际的接口实例,只是一个鸭子类型的实例。

我为什么要这样做?我试图通过将我的设置存储为 JSON、定义映射到该 JSON 的接口来简化我复杂的应用程序配置,然后让我的 IoC 容器自动将正确的配置注入到任何需要它的类中。

0 投票
1 回答
365 浏览

c# - 当实现略有不同时如何使用 DuckTyping?

我在 .NET 中制作了一个可移植类库 (PCL),碰巧在尝试抽象任何行为时,我面临一个非常常见的烦恼,即 .NET Framework对其类型和接口非常具有占有欲。通常会发现一个类型没有实现任何接口,或者当它实现时,接口是内部的。

当现有类型具有兼容的方法(相同的名称和签名)时,这相当容易:我一直在使用 ImpromptuInterface,如下所示:

我得到了我想要的。透明且方便。

但是,当某些方法略有不同时该怎么办?

  • 不同的名字
  • 不同的调用站点:一个是属性getter,另一个是方法
  • 一些不同的方法,但只需稍作修改即可轻松适应它们。

通常,建议使用纯 OOP 方法,并告诉我们创建和适配器。但是当您必须适应复杂的类型层次结构时,这也可能非常繁琐和复杂,当您拥有 UIElement、Control、FrameworkElement 等庞大的类时更是如此……</p>

问题是:我可以让 ImpromptuInterface 克服这些类型的变化来动态创建适配器吗?