将一个类的方法分组在一起
本文关键字:方法 在一起 一个 | 更新日期: 2023-09-27 18:04:41
我找不到我要找的东西,c#的许多特性我都不熟悉。基本上,我有一个包含许多方法的类,其中许多方法属于类似的操作。我正在编写一种API,并希望最终用户能够通过按目的分组来访问这些方法。
所以我的类有许多成员都访问相同的数据,我们叫它ParentClass,我想调用ParentClass. zoomfunctions . zoomin()在父类(最好是该类的成员)中缩放访问的数据
我不知道如何使用继承,但是我找不到如何简单地做到这一点。
嗯…
如果不了解你的代码,听起来你的类想做的事情太多了。也许你应该考虑将你的API分解成多个类,而不是试图将一个类中的方法分组。
考虑阅读Single Responsibility Principle
和Separation of Concerns
,看看你的类设计可以如何改进。
听起来你应该创建一个接口,把你的方法集合在一起,然后创建一个公共属性,把这个接口作为它的类型。
例如:interface IZoomFunctions
{
public void ZoomIn();
...
}
class ParentClass : IZoomFunctions
{
public IZoomFunctions ZoomFunctions { get; }
}
如果你想确保你的用户只能通过你定义的路径访问函数(即他们必须调用ParentClass.ZoomFunctions.ZoomIn(),不应该被允许直接调用ParentClass.ZoomIn()),如果你想把所有的东西放在一个类中,而不创建不同的类,你可以:
为每一组方法定义一个接口,就像JohnD建议的那样:
public interface IZoomFunctions
{
public void ZoomIn();
//...
}
为父类添加一个属性,该属性将类本身转换为接口:
public IZoomFunctions ZoomFunctions
{
get { return this as IZoomFunctions; }
}
然后使你的类显式地实现接口,并使原始方法私有(以避免直接访问):
class ParentClass : IZoomFunctions
{
// your stuff
public IZoomFunctions ZoomFunctions
{
get { return this as IZoomFunctions; }
}
private void ZoomIn()
{
// your real code here
}
public void IZoomFunctions.ZoomIn()
{
this.ZoomIn();
}
}