gpt4 book ai didi

c# - 不确定我在 .net 应用程序中的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:13 25 4
gpt4 key购买 nike

我又来求助了。我正在编写我的第一个“类似真实”的应用程序来练习我学到的东西,但我不确定我的方法。我会尽力解释它,因为我的英语允许我。

应用程序由基础抽象类和三个从该基础继承的类组成。

abstract class BaseClass
{
// Some stuff...

// This method is used in all classes. It gets whole adb output
// and returns it as a string for future formating
protected string ProcessAdbCommand(string command)
{
try
{
_processInfo.Arguments = command;
Process adbProcess = Process.Start(_processInfo);
adbProcess.WaitForExit();
return adbProcess.StandardOutput.ReadToEnd();
}
catch (Exception e)
{
WriteToLog(e.Message);
return null;
}
}
}

在 ProcessAdbCommand 返回输出后,我将调用另一个方法来根据需要处理输出。原则始终相同 - 格式化输出并根据输出做出有用的想法。

现在我想说清楚,负责输出处理的方法需要在每个继承的类中。但问题是在非常类中它返回不同的值类型( bool 值、IDevice 列表和字符串)

我在这里挣扎。首先,我想让它成为 protected 抽象。有点像

abstract class BaseClass
{
// Some stuff...

// Same as above
protected string ProcessAdbCommand(string command)
{
//Same as above
}

//Method which will be implemented in every inherited class differently
protected bool|List<IDevice>|string ProcessAdbOutput(string adbOutput)
{
//Method implementation

return bool|List<IDevice>|string
}
}

但正如我发现的那样,无法覆盖返回类型。而且因为方法将始终仅在类内部使用,所以我看不出有理由使用接口(interface)“强制”它。

一段时间后,我决定放弃在派生类中强制实现并根据需要简单地编写它们。但你认为这是“合法”的做法吗?你会如何解决“现实世界”应用程序中的问题?有什么我仍然想念的东西,或者我的方法完全错误吗?谢谢。

奋斗的新手。

最佳答案

一种可能的方法是使抽象基类通用并接受 T 参数,该参数也可以是 ProcessAdbOutput 方法的输出。然后,将方法设为 abstract 以确保任何派生类型都必须实现它:

public abstract class BaseClass<T>
{
protected string ProcessAdbCommand(string command)
{
return string.Empty;
}

public abstract T ProcessAdbOutput(string result);
}

public class DerivedClass : BaseClass<IList<IDevice>>
{
public override IList<IDevice> ProcessAdbOutput(string result)
{
return new List<IDevice>();
}
}

关于c# - 不确定我在 .net 应用程序中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32541419/

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