我正在使用IoC在继承的类中定义某些行为。我有财产
protected virtual bool UsesThing { get { return true; } }
在我的顶级班上。
在我的继承班上
protected override bool UsesThing { get { return false; } }
我在顶层类中使用该属性,并且在使用顶层值。有没有办法使它使用继承的值?我认为这就是虚拟应该做的。
代码示例:
using System;
public class Program
{
public static void Main()
{
B b = new B();
b.PrintThing();
//I want this to print the value for B
}
public class A
{
protected virtual bool Enabled
{
get
{
return true;
}
}
public void PrintThing()
{
Console.WriteLine(this.Enabled.ToString());
}
}
public class B : A
{
protected override bool Enabled
{
get
{
return false;
}
}
}
}
Here's a Dot Net Fiddle demonstrating my problem
参考方案
您可以执行以下操作:
https://dotnetfiddle.net/SOiLni
A本身对B的实现一无所知,因此您必须实例化B的对象才能访问其Boverride属性。
小提琴的略微修改版本:
public class Program
{
public static void Main()
{
A a = new A();
a.PrintThing();
A newA = new B();
newA.PrintThing();
}
public class A
{
protected virtual bool Enabled
{
get
{
return true;
}
}
public void PrintThing()
{
Console.WriteLine(this.Enabled.ToString());
}
}
public class B : A
{
protected override bool Enabled
{
get
{
return false;
}
}
}
}
方法链PHP OOP - php通常,在许多框架中,您可以找到使用查询生成器创建查询的示例。通常您会看到:$query->select('field'); $query->from('entity'); 但是,在某些框架中,您也可以像这样$object->select('field') ->from(…
OOP:upcast与直接实例化 - java我正在准备加入SCJP,看起来我不了解类强制转换原则。class Dog extends Animal 创建Dog()实例的第一种方法-制作Animal实例并将其投放到Dog(upcast):Animal a = new Dog(); Dog d1 = (Dog)a; VS创建Dog()实例的第二种方法-直接进行创建:Dog d2 = new Dog(); …
LeetCode题解371.sum-of-two-integers题目地址 https://leetcode.com/problems/sum-of-two-integers/description/ 题目描述 Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Example 1: …
PHP OOP:为域实体提供“身份” - php这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…
调用glDrawArrays之后的GL_OUT_OF_MEMORY。为什么? - java我的情况似乎很奇怪。我将尝试提供足够的详细信息,以便比我聪明的人可以对此进行解释。基本上这里是设置:OS: Android 2.2 Froyo Device: SGS Vibrant Application: OpenGL-ES 1.1 问题就在这里:我可以成功渲染一个相当复杂的场景,并且它可以连续运行数小时而不会泄漏任何内存。 Dalvikvm每3-5分钟…