草庐IT

Overriding

全部标签

c# - 在没有不可变字段的类中覆盖 Object.GetHashCode() 时返回什么?

好吧,在你因为互联网上发布了数百个听起来相似的问题而生气之前,我可以向你保证,我刚刚花了最后几个小时阅读了所有并且没有找到了我的问题的答案。背景:基本上,我的一个大型应用程序一直遇到这样一种情况,即ListBox.SelectedItem属性上的某些Binding会停止工作,或者程序会在之后崩溃对当前选定的项目进行了编辑。我最初问'Anitemwiththesamekeyhasalreadybeenadded'ExceptiononselectingaListBoxItemfromcode在这里提问,但没有得到答案。直到本周我才有时间解决这个问题,当时我有几天时间来解决它。现在长话短说

c# - 使用派生类型和同名 C# 覆盖属性

我试图用不同但派生类型相同的名称覆盖基类中的属性。我认为可以通过协变或泛型来实现,但我不确定该怎么做?以下代码得到错误:Error1'Sun.Cache':typemustbe'OuterSpace.Cache'tomatchoverriddenmember'OuterSpace.Cache'publicclassOuterSpace{publicvirtualOuterSpaceDataData{get;set;}publicvirtualOuterSpaceAnalysisAnalysis{get;set;}publicvirtualOuterSpaceCacheCache{get

c# - 使用反射动态覆盖 ToString()

我通常重写ToString()方法以输出属性名称和与它们关联的值。我有点厌倦了手写这些,所以我正在寻找一个动态的解决方案。主要内容:TestingClasstc=newTestingClass(){Prop1="blah1",Prop2="blah2"};Console.WriteLine(tc.ToString());Console.ReadLine();测试类:publicclassTestingClass{publicstringProp1{get;set;}//propertiespublicstringProp2{get;set;}publicvoidMethod1(stri

c# - 在方法覆盖中更改 params 修饰符

我知道params修饰符(将数组类型的一个参数转换为所谓的“参数数组”)不是方法签名的一部分。现在考虑这个例子:classGiraffid{publicvirtualvoidEat(int[]leaves){Console.WriteLine("G");}}classOkapi:Giraffid{publicoverridevoidEat(paramsint[]leaves){Console.WriteLine("O");}}编译时没有警告。然后说:varokapi=newOkapi();okapi.Eat(2,4,6);//willnotcompile!给出错误(方法“Eat”没有重

c# - C#泛型是如何实现的?

我曾认为C#中的泛型的实现方式是在运行时或编译时生成新的类/方法/你有什么,当使用新的泛型类型时,类似于C++模板(我从未真正研究过,我很可能是错的,对此我很乐意接受更正)。但是在我的编码中我想出了一个确切的反例:staticclassProgram{staticvoidMain(){TesttestVar=newTest();GenericTestgenericTest=newGenericTest();intgen=genericTest.Get(testVar);RegularTestregTest=newRegularTest();intreg=regTest.Get(test

c# - 为什么不在构造函数中调用可覆盖的方法?

这是一个过于简单的例子,但我有一些现实生活中的代码在概念上做同样的事情(试图验证派生类的值“设置”访问器方法),分析器给我“不要调用可重写的方法build者。”我想弄清楚我是否应该更改我的代码,或者忽略警告。我想不出有什么理由应该注意这个警告。publicabstractclassSimpleUrl{protectedstring_url;publicabstractstringUrl{get;set;}publicSimpleUrl(){}publicSimpleUrl(stringUrl){this.Url=Url;}}publicclassHttpUrl:SimpleUrl{pu

c# - 为什么重载方法的优先级低于实例方法

我有基类ApublicclassA{publicvirtualvoidMethod(Aparameter){Console.WriteLine(MethodBase.GetCurrentMethod());}publicvirtualvoidMethod(Bparameter){Console.WriteLine(MethodBase.GetCurrentMethod());}}继承BpublicclassB:A{publicvirtualvoidMethod(objectparameter){Console.WriteLine(MethodBase.GetCurrentMethod(

c# - 根据子类指定基类抽象方法的返回类型

我有以下结构:abstractclassBase{publicabstractListGet();//Whatshouldbethegenerictype?}classSubOne:Base{publicoverrideListGet(){}}classSubTwo:Base{publicoverrideListGet(){}}我想创建一个抽象方法,返回具体子类的任何类。因此,正如您从示例中看到的那样,SubOne中的方法应该返回List而SubTwo中的方法应该返回List.我在基类中声明的签名中指定什么类型?[更新]感谢您发布的答案。解决方案是使抽象类通用,如下所示:abstrac

c# - 我需要访问组合框的非公共(public)成员(突出显示的项目)

我正在为一个应用程序实现按键导航,我想在组合框获得焦点时覆盖空格键功能,使其像回车键一样;像这样:if(!cb.IsDropDownOpen){cb.IsDropDownOpen=true;}else{cb.SelectedItem=cb.{non-publicmemberHighlightedItem};cb.IsDropDownOpen=false;}问题是我需要获取该非公共(public)成员的值,以便我可以设置所选值并关闭下拉列表(输入通常如何工作)。现在的问题是:实现此目标最快且最轻松的方法是什么? 最佳答案 这是我用于执

c# - 注册抛出 'Inheritance security rules violated while overriding member'

对于我的学校项目,我正在使用MVC项目附带的默认帐户Controller注册函数://POST:/Account/Register[HttpPost][AllowAnonymous][ValidateAntiForgeryToken]publicasyncTaskRegister(RegisterViewModelmodel){if(ModelState.IsValid){varuser=newApplicationUser(){UserName=model.UserName};varresult=awaitUserManager.CreateAsync(user,model.Pass