0

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

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

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

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

4

5 回答 5

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

于 2012-01-25T21:25:59.583 回答
0

您实际上可以使用动态代码生成来做类似的事情,尽管这更像是一种 hack,而不是应该在生产中使用的实际代码。

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

于 2012-01-25T21:35:35.430 回答
0

You can't change visibility of methods, but you can pass parameter to the single method and do some logic depending on your parameter by using switch - case. But it depends on your method structure.
Try to review your class and change its design. Maybe you can find any design pattern that will help you.

于 2012-01-25T21:30:47.417 回答
0

我想你可能会在这里寻找一个重构因素。尝试使用所有行为相同的方法/属性创建一个基类,无论参数如何,然后是两个行为不同的子类。也看看类工厂模式。

于 2012-01-25T21:27:34.997 回答
0

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

于 2012-01-25T21:28:06.400 回答