草庐IT

装饰工程

全部标签

c# - 如何将管道代码注入(inject)/生成用属性装饰的方法?

我正在阅读一些关于缓存和记忆化以及如何使用委托(delegate)和泛型轻松实现它的文章。语法非常简单,而且实现起来非常容易,但我只是觉得由于重复性,应该可以根据属性生成代码,而不必一遍又一遍地编写相同的管道代码。假设我们从默认示例开始:classFoo{publicintFibonacci(intn){returnn>1?Fibonacci(n-1)+Fibonacci(n-2):n;}}然后记住这个://Let'ssaywehaveautilityclasssomewherewiththefollowingextensionmethod://publicstaticFuncMemo

c# - c#动态装饰对象

是否可以轻松动态装饰对象?例如,假设我有一个List.这个列表实际上是正弦函数的图。我想遍历这些点并为每个PointF添加一个标志,以确定它是否是峰值。但我不想创建一个新的扩展SpecialPointF或其他具有bool属性的东西。随心所欲地评判我是否懒惰,但懒惰是伟大创意的诞生方式(也是糟糕的创意)编辑:我会接受拳击解决方案以及您能想到的任何有趣的hack。没有什么能真正阻止我推导。我只是想知道有没有更好玩的方法。 最佳答案 不,没有办法(具体地)满足您的要求。假设您使用的是C#3.0+,您可以使用匿名类型来执行此操作,假设您不想

c# - 扩展方法 - 装饰者模式

我想知道我们是否可以将扩展方法视为C#中装饰器模式的实现?因为目标是一样的,但是实现的逻辑和概念可能不同?谢谢! 最佳答案 装饰器模式通常与独立于其他实例向类型的特定实例添加行为相关联。在扩展方法的情况下,它会影响在同一范围内编译的类型的所有实例。我认为它不是装饰器模式的一部分。 关于c#-扩展方法-装饰者模式,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15211385/

嵌入式软件工程师面试题收录(1)

最近收集了许多嵌软的面试题,内容都是在很多文章中剪下来的!1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60*60*24*365)UL 使用#define预处理器指令需要注意的是,不能以分号结束,并且尽量不要自己计数,要懂得预处理器可以帮我们计数常数表达式的值。#define使用比较严谨,考虑到使用场合,括号一般很常用。这个表达式会使16位机的整数型溢出,UL代表unsignedlong。2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。#define MIN(A,B) ((A)这里用到三重条

c# - 具有许多属性的类的装饰器模式

我有这个简单的类:publicclassDataBag{publicstringUserControl{get;set;}publicstringLoadMethod{get;set;}publicdynamicParams{get;set;}publicintHeight{get;set;}publicDataBag(stringControl,objectvars,stringlm){UserControl=Control;LoadMethod=lm;Params=vars;Height=0;}}然后我想为它创建一个装饰器,它会添加一堆它自己的属性。问题是提供对装饰属性的访问的最简

c# - 装饰类或参数是什么意思?

Decorateoraddattributetoaclassorparameter是什么意思?目的是什么,我什么时候这样做?欢迎链接到资源和直接回答。 最佳答案 当您在C#中添加装饰器时,就像向类/方法添加属性一样。它会附加一个属性。如果你写单元测试你会遇到一个像这样的简单装饰器TestMethod:[TestMethod]publicvoidTestMethod1(){}框架将使用装饰器来检查测试集中有哪些测试方法。您可以检查属性here还有一篇关于WritingCustomAttributes的文章值得一读装饰器不限于“[]”形

c# - 在 WPF 装饰器中绘制虚线

我在网上找到了几篇关于在WPF中绘制虚线的文章。但是,它们似乎围绕着使用Line类,它是WPF中的UIElement。它是这样的:LinemyLine=newLine();DoubleCollectiondashes=newDoubleCollection();dashes.Add(2);dashes.Add(2);myLine.StrokeDashArray=dashes;现在,我在一个装饰器中,我只能访问一个绘图上下文。在那里,我或多或少地减少了绘图基元、画笔、钢笔、几何图形等。这看起来更像这样:varpen=newPen(newSolidColorBrush(Color.From

c# - C#中的工程符号?

是否有任何代码(或内置函数)允许以工程符号输出float?例如,1.5e-4将显示为150µ,5e-3将显示为5m。 最佳答案 这可能需要重构:privatestaticstringToEngineeringNotation(thisdoubled){doubleexponent=Math.Log10(Math.Abs(d));if(Math.Abs(d)>=1){switch((int)Math.Floor(exponent)){case0:case1:case2:returnd.ToString();case3:case4:ca

c# - ContentControl 旋转装饰器渲染

我最近偶然发现了以下问题:在我的WPF应用程序中,我实现了一个小设计器,您可以在其中将元素放在Canvas上,移动、缩放和旋转它们。在网上搜索时,我找到了followingsolution对于这个问题。此解决方案通过System.Windows.Controls.Primitives.Thumb类实现移动、缩放和旋转,因此我认为我只需针对我的应用调整此解决方案并继续。问题是,虽然在我的机器上一切都很好,但在其他机器上却存在一些渲染问题。我已经截屏了我所说的话:我使用的是Windows7,即使我在其他Windows7上运行我的应用程序,它也呈现错误。我在我的机器上使用WindowsXP和

c# - caSTLe-windsor 中的多装饰器模式

我们正在重新设计一些遗留软件以使其更易于测试,并决定使用依赖注入(inject)和CaSTLe.Windsor来帮助我们。首先,我们的目标:*许多装饰器都在数据流上工作。*装饰器的多种组合是可能的,并且可能需要每种情况下的根节点从不同的地方获取数据。从技术上讲,我们的设计如下:interfaceIUpdateableValue{TGet();};我们有使用多个组件检索三组数据,所有组件都实现IUpdateableValue()(伪代码):JsonParser(Decompressor(Decrypter(decryptionKeyFileCache(filename,HttpWebDo