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

时间:2012-01-25 21:22:35

标签: c# constructor method-hiding

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

更多信息: 我是这个GUI开发的一部分,他们有一个API可以访问硬件中的寄存器。现在他们正在发布一个更新的硬件,所以我需要支持新旧的硬件(旧的一个具有较旧的API,一些旧的删除,一些新的寄存器添加)。

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

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

5 个答案:

答案 0 :(得分:5)

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

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,它会隐藏类中的其他成员....

答案 1 :(得分:0)

我想你可能会在这里考虑一个重要因素。尝试使用行为相同的所有方法/属性创建基类,而不管参数如何,然后使用两个行为不同的子类。还要看一下班级工厂模式。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

你实际上可以使用Dynamic code generation做同样的事情,虽然这更像是一个hack而不是应该在生产中使用的实际代码。

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