Tag: 覆盖

多态性和铸造

我想了解c#中的多态性,所以通过尝试几个构造我想出了以下案例: class Shape { public virtual void Draw() { Console.WriteLine(“Shape.Draw()”); } } class Circle : Shape { public override void Draw() { Console.WriteLine(“Circle.Draw()”); } } 我理解为了将Draw()消息发送到几个相关对象,所以他们可以根据自己的实现行事我必须更改(在这种情况下)形状’指向’的实例: Shape shape = new Circle(); shape.Draw(); //OK; This prints: Circle.Draw() 但是,为什么,当我这样做时: Circle circle = new Circle(); circle.Draw(); //OK; This prints: Circle.Draw() Shape shape = circle as Shape; // or […]

重写属性上的.net XmlSerializer

我有一个带有抽象属性的基类: public abstract int ID {get;set;} 现在,我有一个子类,它是XmlSerialized。 所以它有: [XmlElement(“something”)] public override int ID { get { //… } set { //… } } 我无法将XmlElement属性移动到baseclass,因为每个子类都有不同的xml元素名称。 现在,当我反序列化这个类时,我收到以下错误: 成员’Subclass.ID’隐藏inheritance的成员’BaseClass.ID’,但具有不同的自定义属性。 我能做什么?

如何覆盖ToString()并实现generics?

我有代码,我想做出以下更改: 如何覆盖ToString()? 它说:静态成员… ToString(System.Collections.Generic.List)’不能标记为覆盖,虚拟或抽象。 我如何使它通用? public static override string ToString(this List list) { string output = “”; list.ForEach(item => output += item.ToString() + “,” ); return output; } 谢谢!

确定Equals()是否为覆盖?

我有一个Type(type)的实例。 如何确定它是否覆盖Equals()?

新的和覆盖之间的区别?

我有一个基类,我想为所有inheritance类的方法提供一些“基础”function。 在我想inheritance的inheritance类中: public override void Setup() { base.Setup(); } 但目前它说我必须使用new关键字。 我怎么拥有它所以我必须使用override关键字? 目前我使用new关键字和使用override有什么区别吗?

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

这是一个过于简单的例子,但是我有一些现实生活中的代码在概念上做同样的事情(试图validation派生类的“set”访问器方法的值),并且Analyzer给了我“不要在构造函数中调用可覆盖的方法”。 我试图找出是否应该更改我的代码,或忽略警告。 我想不出任何理由我应该留意这个警告。 public abstract class SimpleUrl { protected string _url; public abstract string Url { get; set; } public SimpleUrl() { } public SimpleUrl(string Url) { this.Url = Url; } } public class HttpUrl : SimpleUrl { public HttpUrl() { } public HttpUrl(string Url) { this.Url = Url; } public override string Url { […]

与重写相关联的密封关键字

是否总是需要在下面代码的方法的签名中使用override关注关键字: public sealed override string Method1(){…..} 我的意思是,如果我想在没有覆盖的情况下“密封”基类中的方法,是否仍然需要override关键字?

如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?

我有一个非常基本的对象对象模型,由System.Xml.XmlSerialization东西序列化。 我需要使用XmlAttributeOverridesfunction为子元素集合设置xml元素名称。 public class Foo{ public List Bars {get; set; } } public class Bar { public string Widget {get; set; } } 使用标准的xml序列化程序,这将成为 … 我需要使用XmlOverrideAttributes来说明这一点 … 但我似乎无法让它重命名集合中的子元素…我可以重命名集合本身…我可以重命名根…不知道我做错了什么。 这是我现在的代码: XmlAttributeOverrides xOver = new XmlAttributeOverrides(); var bars = new XmlElementAttribute(“SomethingElse”, typeof(Bar)); var elementNames = new XmlAttributes(); elementNames.XmlElements.Add(bars); xOver.Add(typeof(List), “Bars”, elementNames); StringBuilder stringBuilder = new StringBuilder(); StringWriter […]

实现自定义成员资格用户和自定义成员资格

参考 http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx http://msdn.microsoft.com/en-us/library/ms366730.aspx 题 在标题Create a Custom Membership Provider标题下的第二个链接中,您将注意到他们提到了这一点 您需要创建一个支持自定义成员资格用户类型和自定义成员资格数据存储的自定义成员资格提供程序。 可以编写自定义成员资格提供程序的GetUser和CreateUser方法以返回自定义成员资格用户类型的对象。 下面是我的自定义会员用户与自定义字段 自定义会员用户 public class CustomMembershipUser : MembershipUser { //private fields for internal use private bool _isMarried; private bool _hasLicense; private string _address; private int _userId; //public fields for use by end user public int UserId { get { return _userId; } set { _userId […]

类inheritance/方法覆盖

这是我第一次上课,所以请原谅我的无知。 我有一个Pet类是我的基类。 我有两个孩子class,狗和猫。 我想要做的是让Cat和Dog方法通过说“Woof!”来覆盖Pet方法。 和“喵!” 而不是说话。 然后在另一种forms,我必须按下按钮打印信息(名称,颜色和他们说话)。 class Pet { protected string name, color, food; public string Name { get { return name; } set { name = value; } } public string Color { get { return color; } set { color = value; } } public string Food { get { return food; […]