草庐IT

统一结果包装

全部标签

c# - 如何将静态类包装在非静态实例对象中(动态地)

我有一个有趣的问题。我需要动态包装静态类。IE。向我的调用者返回一个非静态实例。例如:publicobjectCreateInstance(stringclassName){Typet=assembly.GetType(className);if(IsStatic(t)){returnCreateStaticWrapper(t);}else{returnActivator.CreateInstance(t);}}所以我需要的是关于如何实现CreateStaticWrapper的指导。注意:不幸的是我不能使用Dynamic对象。那么我的选择是什么?我不是那么热衷于学习IL生成?如果IL生

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# - 为什么 Visual Studio Debugger 不枚举 BitArray 并显示结果?

对于下面这行C#代码:BitArraybitty=newBitArray(new[]{false,false,true,false});如果我在Watch窗口中计算“bitty”,我看不到集合的成员。如果我计算应该枚举IEnumerable并显示结果的“bitty,results”,我会收到消息“只有Enumerable类型可以有结果View”,即使BitArray是一个IEnumerable。调试器为什么要这样做?澄清:我问的是VS调试器表达式计算器内部发生了什么,而不是问如何在调试器中查看BitArray.. 最佳答案 结果Vi

c# - LINQ - 将属性添加到结果

除以下方法外,还有其他方法可以将属性添加到Linq查询结果的对象吗?varquery=fromxindb.Coursesselectnew{x.OldProperty1,x.OldProperty2,x.OldProperty3,NewProperty=true};我想在不列出对象的所有当前属性的情况下执行此操作。有很多属性,我不希望每次更改类时都必须更新此代码。我仍在学习LINQ,非常感谢您的建议。 最佳答案 用部分类添加它:publicpartialclassCourses{publicStringNewProperty{get

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

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

c# - 枚举 MatchCollection 时,为什么 var 结果是 Object 类型而不是 Match 类型?

我注意到下面的代码有些奇怪:MatchCollectionmc=Regex.Matches(myString,myPattern);foreach(varmatchinmc)Console.WriteLine(match.Captures[0]);//变量match的类型是Object而不是Match。我习惯于使用var枚举集合,没有这样的问题。为什么MatchCollection不同? 最佳答案 MatchCollection是在.NET2之前编写的,所以它只是实现了IEnumerable而不是IEnumerable.但是,您可以

c# - ASP.NET 应用程序中搜索结果的缓存体系结构

在ASP.NET系统中缓存昂贵搜索结果的好的设计是什么?任何想法都将受到欢迎......特别是那些不需要我们自己发明复杂基础设施的想法。以下是与问题相关的一些一般要求:每个搜索结果可以产生从零到几百条结果记录执行每个搜索都相对昂贵且耗时(在数据库中5-15秒)结果在客户端显示之前必须分页以避免用户信息过载用户希望能够在返回的结果中进行排序、过滤和搜索用户希望能够在搜索结果中快速切换页面用户希望能够在任意数量的页面上选择多个项目(通过复选框)用户希望在搜索完成后获得相对快速的性能我看到了一些关于在哪里以及如何实现缓存的可能选项:1。在服务器上缓存(在session或应用程序缓存中),使用

c# - 具有 OR 子句和空值的 lambda 表达式的 LINQ where 子句返回不完整的结果

问题简而言之我们在Where子句中使用了一个lambda表达式,它没有返回“预期”结果。快速总结在analysisObjectRepository对象中,有一些对象在名为Parent的属性中也包含父关系。我们正在查询此analysisObjectRepository以返回一些对象。细节下面的代码应该做的是,返回包含ID值的特定对象的根、第一个子对象(直接子对象)和孙对象。在下面的代码中,常识告诉我们,所有使3个单独的OR条件中的任何一个为真的结果都应该在结果中返回。ListanalysisObjects=analysisObjectRepository.FindAll().Where(

C#:拆分字符串并将结果分配给多个字符串变量

我有一个字符串,其中包含由特定字符分隔的多个字段,如下所示:A,B,C我想在逗号处拆分字符串并将每个结果字段分配给它自己的字符串变量。在Perl中,我可以像这样优雅地做到这一点:my($varA,$varB,$varC)=split(/,/,$string);在C#中实现相同结果的最简单、最优雅的方法是什么?我知道我可以拆分成一个数组:string[]results=string.Split(',');但是我将不得不通过它们的索引访问这些字段,例如结果[2]。这很难阅读且容易出错-考虑不要有3个或30个字段。出于这个原因,我更喜欢将每个字段值放在自己的命名变量中。