繁体   English   中英

如何在c#中隐藏类中的函数?

[英]How to hide functions within classes in c#?

我需要根据传递给 c# 中构造函数的参数在类中隐藏几个方法。 我该怎么做? 提前致谢!

更多信息:我参与了这个 GUI 开发,他们有一个 API 可以访问硬件中的寄存器。 现在他们正在发布更新的硬件,所以我需要同时支持具有更新 API 的旧硬件和新硬件(主要是旧版本的重复,删除了一些旧的并添加了一些新的寄存器)。

此外,我只需要保留一个名为“API”的类,因为我们在很多地方都使用过它。 因此,排除了使用具有不同名称的较新 API 的想法。

现在终于,我有了这个想法,即通过有条件地隐藏注册表访问方法,将新方法包含在旧方法中。

您无法切换成员的可见性..... 最好的办法是使用不同的界面来隐藏成员。

public interface IName
{
   string Name { get; set; }
}


public interface INumber
{
   string PhoneNumber { get; set; }
}


public class Worker : IName, INumber
{
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
}

因此,要么通过 IName 或 INumber 接口使用 Worker ,它将隐藏类中的其他成员....

我认为您可能正在考虑这里的重构。 尝试使用所有行为相同的方法/属性创建一个基类,而不管参数如何,然后是两个行为不同的子类。 也看看类工厂模式。

您需要将代码重组为多个类或接口。 您无法根据参数值动态更改类成员的可见性级别。 成员是构建时间信息而不是运行时间。

您无法更改方法的可见性,但您可以将参数传递给单个方法,并使用switch - case根据您的参数执行一些逻辑。 但这取决于您的方法结构。
尝试查看您的课程并更改其设计。 也许你可以找到任何对你有帮助的设计模式。

您实际上可以使用Dynamic code generation做类似的事情,尽管这更像是一种黑客行为,而不是应该在生产中使用的实际代码。

也许如果你解释为什么你需要这个,那么你可能会得到更相关的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM