gpt4 book ai didi

c# - 有没有办法强制派生类实现抽象类或嵌套在基类中的接口(interface)?

转载 作者:行者123 更新时间:2023-11-30 20:45:14 36 4
gpt4 key购买 nike

我有这个抽象类:

public abstract class Task
{
public string ID {get; set;}
public string Name {get; set;}
public abstract class Options{};

public abstract void Execute();
}

我有其他类扩展这个类:

public class Copy : Task
{
public override void Execute()
{
Console.Write ("running");
}
}

我希望每个派生类都实现自己的 Options 类,这样它们就可以拥有自己的参数。

所以 Search 类必须实现它自己的 Options 类及其所需的属性,例如“includesubfolders”、“区分大小写”,等等。

同时 Move 任务可以实现它自己的:“overwrite”等。

在抽象类中使属性和方法抽象化会强制派生类实现它们自己的,但在同一类中定义嵌套抽象类或接口(interface)不会强制它的派生类实现它们自己的。

我可以在每个派生类中单独定义每个属性,但这违背了目的,因为我想稍后在 Execute 方法中查询 Task.Options 中的属性。

我也尝试过动态对象,但这带来了其他问题。

最佳答案

你可以使用泛型

public abstract class Options{};

public class CopyOptions : Options
{
}

public abstract class Task<T> where T : Options
{
public string ID {get; set;}
public string Name {get; set;}

public T Options { get; set; }

public abstract void Execute();
}

public class Copy : Task<CopyOptions>
{
public override void Execute()
{
Console.Write("running");
}
}

关于c# - 有没有办法强制派生类实现抽象类或嵌套在基类中的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442519/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com