草庐IT

OBJ_METACLASS

全部标签

c# - 如何使用 Moq 为接口(interface)模拟 `object.Equals(object obj)`

我有一个有趣的问题要解决。考虑像这样的一些接口(interface):publicinterfaceIMyThing{intId{get;}}现在我想测试使用这个接口(interface)的代码。也许有一些LINQ魔法。像这样:publicclassSomeClass{privateIMyThing_thing;...publicboolHasThing(IEnumerablethings){returnthings.Contains(_thing);}}我正在模拟所有实现IMyThing的对象使用Moq:publicstaticIMyThingMockMyThing(intnewId

C# -- 是否需要检查 "obj is Person && obj != null"

我看到了下面的代码,publicoverrideboolEquals(objectobj){//Fromthebookhttp://www.amazon.co.uk/Pro-2010-NET-4-0-Platform/dp/1430225491//Page254!if(objisPerson&&obj!=null)...}根据我的理解,我认为代码应该重写如下:publicoverrideboolEquals(objectobj){if(objisPerson)...}对吗?基于http://msdn.microsoft.com/en-us/library/scekt9xw%28v=vs

C# 不同的转换方式——(T)obj vs obj as T

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:castingvsusingthe'as'keywordintheCLR我见过两种不同的C#转换方式。例如:MyObjfoo=(MyObj)bar;//thisiswhatIseemostofthetimesMyObjfoo=barasMyObj;//Idoseethissometimes那么,基本区别是什么?style1和style2转换的正确名称是什么?我如何决定何时使用什么?是否存在任何重大性能问题?关于这个主题,还有什么我应该知道的吗?非常感谢您对此的调查:)

c# - `fixed` 与 GCHandle.Alloc(obj,GCHandleType.Pinned)

我试图找出用fixed关键字定义的固定指针是如何工作的。我的想法是在内部GCHandle.Alloc(object,GCHandleType.Pinned)用于此目的。但是当我查看为以下C#代码生成的IL时:unsafestaticvoidf1(){vararr=newMyObject[10];fixed(MyObject*aptr=&arr[0]){Console.WriteLine(*aptr);}}我找不到任何GCHandle的踪迹。我看到该方法中使用固定指针的唯一提示是以下IL声明:.localsinit([0]valuetypeTestPointerPinning.MyObj

c# - 在没有标准 (Obj sender, EventArgs args) 签名的情况下创建事件处理程序委托(delegate)有多错误?

我了解使用标准MS事件处理程序委托(delegate)签名的好处,因为它允许您轻松扩展通过事件传递的信息,而不会破坏任何基于旧委托(delegate)签名的旧关系。我想知道在实践中人们多久遵守一次这条规则?假设我有一个像这样的简单事件publiceventNameChangedHandlerNameChanged;publicdelegatevoidNameChangedHandler(Objectsender,stringoldName,stringnewName);这是一个简单的事件,我几乎肯定我需要从NameChanged事件中知道的唯一参数是名称更改的对象、旧名称和新名称。那么

c# - 太多 if (obj is thisObj) 语句

我目前有一种方法试图找出它收到的对象是什么。它知道在某个接口(interface)上,例如IService,但我有代码查看它并试图告诉我它是Service1还是Service2。我目前有很多if(objisthisObj)样式语句,什么是使这段代码漂亮的最佳解决方案?这是我所拥有的示例:publicvoidDoSomething(IServiceservice){if(serviceisService1){//DOsomething}if(serviceisService2){//DOsomethingelse}}现在有两个并不是什么坏事,但我正在考虑可能有20多个这样的东西,使用起来

c# - 使用带有 bindinglist<business obj> 的绑定(bind)源作为数据源有什么好处?

我可以通过设置DataSource属性将我的DataGridView控件直接绑定(bind)到我的业务对象的绑定(bind)列表。我的业务对象实现INotifyPropertyChanged,因此当新项目添加到绑定(bind)列表或更新现有项目时,DGV会更新。关于处理单个记录,我可以将我的业务对象绑定(bind)到文本框和其他相关控件。我还可以从BindingList派生并创建一个CustomBindingList类来实现IBindable所需的方法,如下面的链接所述:http://msdn.microsoft.com/en-us/library/aa480736.aspx或者,我看

c# - 如何将 "bin"和 "obj"目录重定向到不同的位置?

有没有办法告诉VisualStudio为bin和obj目录使用不同的位置?比如我的项目在C:\my\myprojects.csproj,我怎么会有obj和bin目录例如,D:\otherdirectory\bin和D:\otherdirectory\obj。VisualStudio项目选项仅提供重定向bin目录,而不提供obj目录。另外,奖励问题:我可以使用环境变量,而不是完整路径或相对路径吗?这可能吗? 最佳答案 引用thisarticle并使用.项目文件。下面给出了一种修改相对于bin的调试和发布文件夹的方法-在解决方案资源管理

C#编译器编译.txt .obj .java文件

usingSystem;classProgram{publicstaticvoidMain(){Console.WriteLine("HelloWorld!");Console.ReadLine();}}我将文件保存为1.java、2.obj和3.txt。然后,我使用VisualStudio命令提示符编译文件:csc1.javacsc2.objcsc3.txt令人惊讶的是,它将3个文件都编译成可执行文件并成功执行。谁能给我解释一下这种行为? 最佳答案 文件扩展名对C#编译器无关紧要:只要它正确获取程序文本,编译器就不会查看文件名或文

javascript - javascript 中的 obj?.prop 语法是什么?

这个问题在这里已经有了答案:Null-safepropertyaccess(andconditionalassignment)inES6/2015(11个答案)关闭3年前。我在查看一段代码时发现了这个:{{abc?.xvy===tyu?abc?.xz:abc?.xz}}我无法理解这个表达的意思。我知道这是Null-safe属性访问,但我对链接有点困惑。非常感谢任何帮助