将一个类的方法分组在一起

本文关键字:方法 在一起 一个 | 更新日期: 2023-09-27 18:04:41

我找不到我要找的东西,c#的许多特性我都不熟悉。基本上,我有一个包含许多方法的类,其中许多方法属于类似的操作。我正在编写一种API,并希望最终用户能够通过按目的分组来访问这些方法。

所以我的类有许多成员都访问相同的数据,我们叫它ParentClass,我想调用ParentClass. zoomfunctions . zoomin()在父类(最好是该类的成员)中缩放访问的数据

我不知道如何使用继承,但是我找不到如何简单地做到这一点。

将一个类的方法分组在一起

嗯…

如果不了解你的代码,听起来你的类想做的事情太多了。也许你应该考虑将你的API分解成多个类,而不是试图将一个类中的方法分组。

考虑阅读Single Responsibility PrincipleSeparation 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();
    }
}