草庐IT

C#:包装方法调用的优雅方式

为相当含糊的标题道歉,但我想要实现的目标可能在代码中有更好的说明。我有一个WCF客户端。当我调用方法时,我想将每个调用包装在一些错误处理代码中。因此,我没有直接公开这些方法,而是在客户端类上创建了以下辅助函数:publicTHandleServiceCall(FuncserviceMethod){try{returnserviceMethod(decorator);}[...]}客户端代码是这样使用它的:service.HandleServiceCall(channel=>channel.Ping("Hello"));并且对Ping的调用被很好地包裹在一些将尝试处理任何错误的逻辑中。除

c# - 如何通过属性包装方法?

我想知道是否可以仅通过添加属性来包装方法。示例:我想记录一个方法所花费的执行时间。[LogTimings]publicvoidwork(){..}这是将一种方法包装到另一种方法中(seethispythonimplementation)。 最佳答案 AOP在.NET中是可能的。这是一个article关于它。这是一个listofAOPframeworks对于.NET。 关于c#-如何通过属性包装方法?,我们在StackOverflow上找到一个类似的问题: ht

c# - 用 Html.ActionLink.. 包装一个元素?

我想用一个Action链接包裹一个span,因为我坚持现有的CSS主题。它看起来不像任何Html.ActionLink的构造函数允许这样做。可能的解决方案:使用现有助手实现此目的的方法?使用新的自定义html帮助程序派生并覆盖ActionLink?如果#2是我有两个问题的唯一方法。当我右键单击ActionLink并点击转到定义时,我只看到构造函数签名,而不是实际的代码体。如何查看原始函数体?我在MSDN上也没有看到任何内容以上或多或少会告诉我,但是,如何动态生成actionurl?c 最佳答案 ">

c# - 有没有办法为 WebAPI 项目生成 C# HTTPClient 包装器?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion在即将开展的项目中,我们希望使用ASP.NETWebAPI2向我们的网站和浏览器客户端公开服务功能。由于我们希望尽可能少的“端点”,所以我们希望所有调用,甚至是“内部”调用都使用来自WebAPI网络服务的服务器。(即不只是直接新建一个Controller实例)我正在寻找一些东西来帮助生成或搭建C#“客户端”,它包装HTTPClient并提供强类型的“代理”。类似于通过

c# - ObservableCollection 逐元素变换/投影包装器

在WPF中创建ViewModel时,有时需要转换ObservableCollection中可用的数据(源集合)转换为扩展/限制/转换原始元素(目标集合)的包装元素集合,而元素的数量和顺序始终反射(reflect)原始集合。就像Select扩展方法,但它会不断更新,因此可用于WPF绑定(bind)。如果一个元素被添加到索引x处的源中,则相同元素的Wrapper被添加到目标集合中的相同索引x处。如果索引y的元素在源集合中被删除,则索引y的元素在目标集合中被删除。假设有一个ObservableCollection,但我需要绑定(bind)的是ReadOnlyObservableCollect

c# - EntityFramework 查询操作、数据库提供程序包装、数据库表达式树

我正在尝试为EntityFramework实现数据本地化逻辑。因此,例如,如果查询选择Title属性,则在后台它应该根据当前用户文化引用Title_enGB或Title_deCH列。为此,我想重写EntityFramework中的DbExpressionCommandTrees。我以为这些trees是构建跨数据库插入/更新/选择查询的一种新的通用.NET方法。但现在命名空间System.Data.Metadata和System.Data.Common中的所有相关构造函数/工厂System.Data.Entity.dll中的.CommandTrees是内部的!(在msdn中记录为公开,例

c# - 使用托管代码包装器从 64 位托管代码调用 32 位非托管代码的最佳方式

随着64位机器和应用程序的普及,我遇到必须从托管64位进程调用native32位代码的情况的频率正在增加。我不想将我的应用程序标记为32位,并且我无法获得正在调用的代码的64位版本。我目前使用的解决方案是创建从进程加载的C++COM垫片,以便从64位进程进行32位调用。这种COMshim解决方案运行良好,跨进程调用由COM在幕后处理,从而最大限度地减少了这种方法的开销。不过,我想保留我们使用C#进行的所有新开发,并想知道是否有任何框架可以最大限度地减少这样做的开销。我看过IPCChannel,但我觉得这种方法不如COMshim解决方案那么简洁。谢谢,埃德 最

c# - 使用 wrapper 时 Nlog Callsite 错误

我正在使用NLog进行日志记录,我使用包装器来调用日志方法,我的问题是:如果我尝试打印有关调用站点(${callsite})的信息,它会打印包装器方法,而不是导致记录器记录的原始方法。有什么方法可以获取调用包装器方法的原始方法吗? 最佳答案 看我对这个问题的回答:ProblemmatchingspecificNLogloggername我已经从这里的答案中复制了示例代码(用于缩写的NLog包装器)以省去一些麻烦:classNLogLogger:ILogger{privateNLog.Loggerlogger;//TheTypetha

c# - 用于视频播放的 .NET FFmpeg 包装器

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion寻找可在.NET中使用的FFmpeg包装器。包装器必须支持带音频的视频播放。以下项目不完整FFmpeg包装器:http://code.google.com/p/ffmpeg-sharp/http://sourceforge.net/projects/sharpffmpeg/http://sourceforge.net/projects/ffqlay/http://ww

c# - 使用相同 NuGet 包的两个不同版本

我想使用两个不同版本的相同库(OpenCVSharp2.x和OpenCVSharp3.x)。我将这两个包都下载到单独的项目(我们称之为OCV2Wrapper和OCV3Wrapper)并在我的项目中引用这两个包装器。我不得不从一个包(2.x)中重命名库并引用它们手册,因为:Canweadd2differentversionsofsamepackageinNuGet.我阅读了有关外部别名的信息,并在其中一个包装器中使用了外部别名(在我的例子中是2.x)。但我有一些主要问题:我重命名的库没有复制到启动项目构建(引用两个包装器的那个),而是在2.x包装器的构建中它不起作用,因为它说它无法从我的