我有以下抽象类:
public abstract class BaseClass{
public object contents { get; set; }
public Action<BaseClass> mutator;
public abstract void Initialise();
}
这将被几个类使用,这些类将覆盖Initialize
为 分配值的方法,然后在特定时间点使用委托contents
对其进行变异。mutator
我有以下静态类,每个方法都打算用作mutator
:
public static class Mutators{
public static void VariantA(A inputObj){
// inputObj.contents = something else
}
public static void VariantB(A inputObj) { } // etc. etc.
}
然后我有A类,它实现了BaseClass。我正在尝试将 Mutators.VariantA 分配给 mutator 代表,但我做不到。
public class A : BaseClass{
public A(){
mutator = Mutators.VariantA;
}
public override void Initialise(){
/* set the value of contents property here */
}
}
具体来说,我收到以下错误:A method or delegate
Mutators.VariantA(A)' parameters do not match delegateSystem.Action<BaseClass>(BaseClass)' parameters (CS0123)
我知道这Mutators.VariantA(A)
需要一个类型的对象A
,并且 Action 被声明为接受一个类型的输入BaseClass
,但是作为类A
实现BaseClass
我认为我能够做到这一点?
来自动态类型语言,我很难掌握以这种方式处理类型的问题:(
有什么方法可以通过这种方式指向具有抽象类型输入的函数吗?我需要看看其他一些设计模式吗?
谢谢