C# 从类和接口或抽象类继承时隐藏其他类的方法

C# 从类和接口或抽象类继承时隐藏其他类的方法,c#,interface,logic,abstract-class,object-oriented-analysis,C#,Interface,Logic,Abstract Class,Object Oriented Analysis,为了改进进一步的实现,提供一些指导方针,并使项目中的所有内容尽可能通用,我创建了一个界面,其中包含了一些应该使用的方法。但是,调用该类的用户只能看到该类的一个方法,因此我希望它们是受保护的类型。例如 public class ClassThree { public ClassThree() { var classOne = new ClassOne(); class1.MethodOne(); } } 尽管ClassOne有4个方法,但3

为了改进进一步的实现,提供一些指导方针,并使项目中的所有内容尽可能通用,我创建了一个界面,其中包含了一些应该使用的方法。但是,调用该类的用户只能看到该类的一个方法,因此我希望它们是受保护的类型。例如

public class ClassThree
{
    public ClassThree()
    {
        var classOne = new ClassOne();
        class1.MethodOne();
    }
}
尽管ClassOne有4个方法,但3个方法仅在一个公共类中使用,因此是私有的或受保护的。这三种方法是使第四种方法工作所必需的,但是在理想情况下,其他开发人员将遵循相同的原则。所以我不想在intellisense上看到以下弹出窗口:

class1.MethodTwo();
class1.MethodThree();
class1.MethodFour();
我知道可以从接口隐式调用方法,例如

IInterface.MethodTwo<Type,Type>(string name)
{
  //Do stuff here
}
然而,我想阻止在ClassOne中调用上述方法时的所有铸造,因为这只是我眼中的一根刺。我喜欢干净的代码,但这对我来说一点也不干净。我想到了一个抽象类,但是我的类继承了另一个类。有了这个界面,我就可以

public ClassOne : ClassTwo, IInterface<Type1,Type2>
但是,当我使用抽象类进行此操作时,VisualStudio说需要一个接口。任何见解都是非常受欢迎和赞赏的,因为我希望通过使我的生活和不得不使用我的代码的开发人员的生活更轻松来改进我的代码

提前谢谢

编辑:场景是可以有几个类,比如ClassOne,它们基本上做相同的事情,但是它们使用不同的类型,因为它们必须返回的对象具有不同的值。但是,这些物体的堆积或多或少是相同的,例如:

收集所有API数据 检索要导出到API的列表,并根据类型调用3或4。 将类型1导出到API 将类型2导出到API 这个想法总是一样的,但自然不同的API需要不同的变量。但是为了确保所有的步骤都像以前一样被遵循,我想实现一个接口或其他东西,但是步骤1、2和3应该是私有的或受保护的,并且只有步骤2应该对使用它的类可用。然而,如果我只把方法2放在接口中,我永远不能确定其他人会实现1、3和4。这就是这里的目标:P。这个类同时也继承了另一个类,而不仅仅是接口

编辑2:我知道接口只提供公共方法,这就是为什么我在寻找替代方法,因此这个问题。我知道这有什么问题,只是我真的不知道如何才能得到我想要的。感谢到目前为止的回复

编辑3:界面当前看起来像这样,为了举例,我刚刚调整了变量名

   public interface IExport<in T, in TU>
    {
        void GetRequiredApiData();

        bool MethodOne(List<Type> list);

        bool ExportOne(T one);

        bool ExportTwo(TU two);

        bool ValidateExport();
    }

其他三个方法应该只在公共方法内调用,或者将第一个方法设为私有/受保护,并在一个公共方法内调用所有4个方法

接口的全部要点是准确地隐藏调用者不需要知道的其他三种方法对您有什么问题


我怀疑您需要在单独的特定时间以特定顺序调用这三个方法。如果是这样的话,那么你就有一种代码的味道。这些方法可能只是有副作用并改变全局状态的无效子例程。代码需要重构,而不仅仅是一系列子例程,对象需要进行不同的分解。

要理解您的意思有点困难。你在第一段提到了一个接口,但不知怎么的,它变成了一个课堂中间的句子。我想这个类ClassOne有一些方法您想隐藏起来以避免使用代码。请您详细说明为什么将成员私有化或受保护不起作用?还有,第三类是什么?这是消费代码吗?增加了额外的解释,希望现在更清楚!接口中的所有方法都是公共的,根据设计,您只能从一个类继承数据,即使它是抽象的。希望这有帮助you@darkndream我有没有其他可能的选择?所有的逻辑基本上都是这样的,只有这3种方法在调用这个类时引起了我的注意,而不是创建一个文本文件,该文件说尝试遵循这个指导原则,这很可能永远不会起作用:P.I会事先避免这种设计,因为重构85个主要由复制粘贴的样板。但是,为了完成您想要的,与其使用此对象来完成所有工作,不如保留此对象上的一个公共方法,并让它调用您创建的另一个对象上的4个方法,该对象使用抽象类来定义受保护的方法。在我的类中,我有几个属性,它们是对象列表。在继承的Get类中,第一个方法由类方法填充。这个Get类调用静态请求类,该类包含进行API调用的通用方法,同时提供所需的类型等。然后我可以使用这些方法
值,以查看它们是否在我针对的API中实际可用,否则将发生错误请求。一旦这些验证通过,我就可以将所述对象导出到API。有什么方法可以改进这个逻辑吗?把你需要的类型参数放在方法上,而不是对象本身。这样,您就可以保持继承结构,而不受类型参数的干扰。