草庐IT

C# 在自己的构造函数之后调用基类的构造函数?

如何在调用自己的构造函数之后调用基类的构造函数?问题是,基类的构造函数调用了一个抽象方法(在子类中重写),它需要访问变量x,在子类的构造函数中初始化?简短示例代码:abstractclassBaseClass{protectedstringmy_string;protectedabstractvoidDoStuff();publicBaseClass(){this.DoStuff();}}classSubClass:BaseClass{privateTextBoxtb;publicSubClass():base(){this.my_string="Shortsentence.";}pr

c# - C#中从基类调用重写的方法

给定以下C#类定义和代码:publicclassBaseClass{publicvirtualvoidMyMethod(){...dosomething...}}publicclassA:BaseClass{publicoverridevoidMyMethod(){...dosomethingdifferent...}}publicclassB:BaseClass{publicoverridevoidMyMethod(){...dosomethingdifferent...}}publicclassAnotherObject{publicAnotherObject(BaseClasss

c# - 如何确定属性是从基类继承还是在派生类中声明?

我有一个派生自抽象类的类。获取派生类的类型我想找出哪些属性是从抽象类继承的,哪些是在派生类中声明的。publicabstractclassBaseMsClass{publicstringCommonParam{get;set;}}publicclassMsClass:BaseMsClass{publicstringId{get;set;}publicstringName{get;set;}publicMsClass(){}}varmsClass=newMsClass{Id="1122",Name="Somename",CommonParam="paramofthebaseclass"}

c# - 从基类的静态方法获取派生类类型

我想从其基类​​的静态方法中获取派生类的类型。如何实现?谢谢!classBaseClass{staticvoidPing(){Typet=this.GetType();//shouldbeDerivedClass,butitisnotpossiblewithastaticmethod}}classDerivedClass:BaseClass{}//somewhereinthecodeDerivedClass.Ping(); 最佳答案 这可以使用curiouslyrecurringtemplatepattern轻松完成classBas

c# - 显式标记派生类为基类的实现接口(interface)

interfaceIBase{stringName{get;}}classBase:IBase{publicBase()=>this.Name="Base";publicstringName{get;}}classDerived:Base//,IBase{publicDerived()=>this.Name="Derived";publicnewstringName{get;}}classProgram{staticvoidMain(string[]args){IBaseo=newDerived();Console.WriteLine(o.Name);}}在这种情况下,输出将为“Bas

c# - 将派生类永久转换为基类

ClassA{}ClassB:A{}BItemB=newB();AItemA=(A)B;Console.WriteLine(ItemA.GetType().FullName);是否可以像上面那样做一些事情并让编译器打印出类型A而不是类型B。基本上,是否可以永久转换对象以使其“丢失”所有派生数据? 最佳答案 您所要求的是不可能的,原因有二:ItemA.GetType()不返回变量ItemA的编译时类型-它返回运行时类型ItemA引用的对象。您无法使(A)B导致表示更改转换(即新的A对象),因为用户定义的转换运算符(您唯一的希望在这里)

c# - 具有基类和不同实现配置选项的自动映射器

我有两个类(MVCView模型)继承自一个抽象基类。abstractclassBaseModel{}classCar:BaseModel{publicstringSpeed{get;set;}}classCamper:BaseModel{publicintBeds{get;set;}}并希望使用基类配置AutoMapper,例如:Mapper.CreateMap();varsomeObj=newDataDastination();Mapper.Map(instanceOfBaseModel,someObj);这里我得到错误,因为Automapper没有Car或Camper的配置。尝试用

c# - 如何在事先不知道类型的情况下使用 XmlSerializer 反序列化可能属于基类或派生类的对象?

在C#中,如何在事先不知道类型的情况下使用XmlSerializer反序列化可能属于基类或任何派生类的对象?我的所有派生类都添加了额外的数据成员。我制作了一个简单的GUI,可以序列化和反序列化类对象。它会根据用户选择填充的字段将对象序列化为合适的继承类(甚至只是基类)。我对序列化没有任何问题;问题是反序列化。在事先不知道类的情况下,我怎么可能让XmlSerializer将数据反序列化为正确的派生类?我目前创建了一个XmlReader来读取XML文件的第一个节点并从中确定类,它似乎适合我的目的,但它似乎是一个非常不优雅的解决方案。我在下面发布了一些示例代码。有什么建议吗?BaseType

c# - 我应该在每个类还是在基类中声明一次 log4net 记录器?

声明一个记录器并在基类中调用LogManager.GetLogger似乎更干净,这样每个继承人都可以使用它。但是,在log4net站点和其他博客上,如thisblogpost它声明最好为每个类声明一个记录器,因为:Youcanuseloggersthiswaytoisolateloggingconcernsacrossyourobjects,andIwhollyrecommendyoudoso.Thiswillenableyoutothrottleanddirectlogoutputfromindividualloggersusinglog4net'shierarchicalconfi

C# 从内部基类中获取派生类型的名称

在调试session期间,在特定实例的调试信息中识别实际派生类的名称对我来说很重要。我尝试使用this.GetType().Name但这只会返回base类的类型。有没有一种简单的方法可以从基类中获取派生类的类型? 最佳答案 this.GetType().Name应该有效。我认为,就您而言,您可能没有派生类。如果它返回基类名称,则它不应该有派生类。使用这个:基类-输出基类名称派生类-输出派生类名派生类转换为基类-输出派生类名派生类传递给接受基类作为参数的函数-输出派生类名 关于C#从内部基