标签: base-class

ASP.NET MVC:忽略基本控制器类中的自定义属性

我的项目中有许多控制器,它们都是从一个名为BaseController的控制器继承的.我编写了一个自定义属性,我将其应用于整个BaseController类,因此每次操作都在我的任何控制器中运行时,该属性将首先运行.

问题是我有几个控制器动作,我想忽略该属性,但我不知道该怎么做.

有人可以帮忙吗?我正在使用MVC 1.

谢谢.

asp.net-mvc inheritance custom-attributes base-class

4
推荐指数
2
解决办法
6250
查看次数

JAXB编组 - 扩展现有类

我需要使用JAXB通过XML创建一系列Java对象,这些对象都扩展了已创建的公共基类(不使用JAXB).例如,假设我有以下我正在尝试生成的JAXB类:

Penguin.xml  -> Penguin.java
Robin.xml -> Robin.java
Cardinal.xml -> Cardinal.java
Run Code Online (Sandbox Code Playgroud)

我已经有一个现有的基类Bird.java,我希望上面的三个类能够扩展.

做这个的最好方式是什么?

谢谢你的帮助!

jaxb marshalling base-class

4
推荐指数
1
解决办法
7360
查看次数

调用SUPER :: new()

我已经看到了两种new在派生类中实现该方法的方法.

方法一:

sub new {
    my $invocant = shift;
    my $class   = ref($invocant) || $invocant; 
    my $self = {};
    bless($self, $class);
    $self = $self->SUPER::new( @_ );
    return($self);
}
Run Code Online (Sandbox Code Playgroud)

方法二:

sub new {
  my $self = shift;
  my $class = ref($self) || $self;
  return $self if ref $self;
  my $base_object = $class->SUPER::new(@_);
  return bless ($base_object, $class);
}
Run Code Online (Sandbox Code Playgroud)

我不确定我明白它的区别.有人可以解释一下吗?


根据您的评论和答案,我可以看到该ref()部分很糟糕.

但是使用SUPER::new(@_)呢?在第一个例子中,hashref保佑到派生类,然后该对象的SUPERnew被调用,并保存到相同的对象.

在另一方面,第二实例中,基对象是从类的创建SUPER小号new方法和被祝福入新的类.

这两种方式有什么区别?看起来第一个用基础对象覆盖对象.第二个似乎是"双重祝福".我糊涂了.

oop perl base-class

4
推荐指数
2
解决办法
4183
查看次数

将派生类的列表转换为仍返回派生类对象的基类列表

我有以下代码:

public class BaseClass
{
    public string A { get; set; }
}

public class DerivedClass : BaseClass
{
    public string B { get; set; }
}


List<DerivedClass> _derivedClass = new List<DerivedClass>() 
                                       { 
                                           new DerivedClass() 
                                             { A = "test1",
                                               B = "test2"
                                             }
                                       }; 

List<BaseClass> _baseClass = _derivedClass.Cast<BaseClass>.ToList();
Run Code Online (Sandbox Code Playgroud)

代码编译没有任何错误,但是,我希望_baseClass只包含属性A(类型的对象BaseClass),但它同时返回AB属性(类型的对象DerivedClass).我错过了什么以及将派生类的List转换为其基类列表的正确方法是什么?

谢谢.

c# base-class derived-class

4
推荐指数
1
解决办法
1899
查看次数

是否有可能只继承一些(不是所有)基类成员的类?

有没有一种方法,派生类只能继承所有基类成员中的一些......在C#中?如果可以进行此类操作,请提供一些示例代码.

c# inheritance class base-class members

4
推荐指数
2
解决办法
4014
查看次数

模板继承和基本成员变量

尝试使用模板继承时,我遇到了一个奇怪的错误.这是我的代码:

template <class T> class A {
public:
    int a {2};
    A(){};
};

template <class T> class B : public A<T> {
    public:
    B(): A<T>() {};
    void test(){    std::cout << "testing... " << a << std::endl;   };
};
Run Code Online (Sandbox Code Playgroud)

这是错误:

error: use of undeclared identifier 'a'; did you mean 'std::uniform_int_distribution<long>::a'?
    void test(){    std::cout << "testing... " << a << std::endl;   }
Run Code Online (Sandbox Code Playgroud)

如果它可能影响我使用这些标志的东西:

-Wall -g -std=c++11
Run Code Online (Sandbox Code Playgroud)

我真的不知道出了什么问题,因为与没有模板的纯类相同的代码工作正常.

c++ inheritance templates base-class

4
推荐指数
1
解决办法
552
查看次数

FindObjectOfType 返回 null

我遇到的问题是我捡起一个掉落的物品,给枪添加弹药。

使用所有方法和变量构建了一个 Gun 类。构建了一个从 Gun 类派生的 Rifle 类 The Rifle 完美无缺

我现在正在添加一个“拾取”系统,其中 x 数量的敌人会掉落拾取物。

这是要拾取的项目上的脚本

public class AddARAmmo : MonoBehaviour
{
    private Rifle rifle;
    private void Awake()
    {
        rifle = FindObjectOfType<Rifle>();
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == string.Format("Player"))
        {
           rifle.AddAmmo(30);
            Destroy(gameObject);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

步枪和枪的脚本有点长,但这里是枪基类中的相关内容是公共抽象类......

public int bulletsInStock;
 public void AddAmmo(int ammoToAdd)
{
    bulletsInStock += ammoToAdd; 
    UpdateAmmo();// updates on screen Ammo
}
......
Run Code Online (Sandbox Code Playgroud)

然后在步枪班

 public override void Modifiers() // This is where the guns starts are stored …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism abstract-class base-class unity-game-engine

4
推荐指数
1
解决办法
3443
查看次数

是否扩展接口,何时基类已经扩展了相同的接口

在C#中,如下面的代码片段所示,在声明类A时扩展接口IFoo是正确/正确的,知道类BaseClass扩展了接口IFoo吗?是否有必要在此处指定接口IFoo,这是最佳做法吗?

class A : BaseClass, IFoo
{
}
Run Code Online (Sandbox Code Playgroud)

可能是一个愚蠢的问题,但在这种情况下适当的做法是什么?

c# inheritance interface base-class interface-implementation

4
推荐指数
1
解决办法
52
查看次数

从基类调用子类的新方法

我有类似这样的课程

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            A a = new C();

            a.method();
            Console.ReadLine();
        }
    }

    public class A
    {
        public virtual void method()
        {
            Console.WriteLine("METHOD FROM A");
        }
    }

    public class B : A { }

    public class C : B
    {
        public override void method()
        {
            Console.WriteLine("METHOD FROM C");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,打印"METHOD FROM C"

如果我有这样的情况

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            A a = new C(); …
Run Code Online (Sandbox Code Playgroud)

c# methods invoke base-class new-operator

3
推荐指数
1
解决办法
2027
查看次数

派生类的python构造函数

class baseClass():
  def __init__(self,mark,name):
    self.mark = mark
    self.name = name

class derivedClass(baseClass):

b1 = derivedClass(name='Jibin')
print b1.name
Run Code Online (Sandbox Code Playgroud)

这是我的代码最初和它工作正常.

(注意:我无权访问baseClass)

但后来我不得不通过一个附加的属性rankderivedClass.所以我编辑这样的代码.

class baseClass():
  def __init__(self,mark,name):
    self.mark = mark
    self.name = name

class derivedClass(baseClass):
  def __init__(self,rank):
    self.rank = rank 

b1 = derivedClass(name='Jibin')
print b1.name
Run Code Online (Sandbox Code Playgroud)

这导致了错误 __init__() got an unexpected keyword argument 'name'

这是预期的__init__,derivedClass因为没有争论name.

我不想额外的参数添加name__init__derivedClass实时b'cos baseClass有十个参数,而不是2(标志,名称),如果我给他们都作为附加参数 derivedClass,我会搞乱参数列表.

注意:我知道使用baseClass.__init__(self)或初始化baseClasssuper(derivedClass, self).__init__()

python base-class derived-class super

3
推荐指数
1
解决办法
9788
查看次数