给定一组具有一组通用属性和方法以支持给定域逻辑的对象,是否有一种方法可以强制在这些对象上存在某些静态方法?
我得出的结论是,实现接口并不能实现这一点(方法只是实例),并且不能将静态方法标记为覆盖、虚拟或抽象。
提前致谢。
给定一组具有一组通用属性和方法以支持给定域逻辑的对象,是否有一种方法可以强制在这些对象上存在某些静态方法?
我得出的结论是,实现接口并不能实现这一点(方法只是实例),并且不能将静态方法标记为覆盖、虚拟或抽象。
提前致谢。
不。
(注意:在 F# 中,您可以使用“内联”函数和“^”类型(例如,对于所有类型 T,其中 T 具有返回“int”的静态方法 ToInt(T))来表达此类约束。编译器有效地自动扩展每个调用站点到特定类型。)
强制类型具有静态成员的唯一方法是从它继承。所有类型都将具有静态成员,如果您需要在派生类型上覆盖它们,您可以使用“new”关键字:
static void Main(string[] args)
{
Console.WriteLine(Base.Hello());
Console.WriteLine(Derived.Hello());
Console.Read();
/* output will be:
Hello
World
*/
}
public class Base
{
public static object Hello()
{
return "Hello";
}
}
public class Derived : Base
{
public static new object Hello()
{
return "World";
}
}
它与抽象/覆盖并不完全相同,但从消费者的角度来看,工作方式类似。