【问题标题】:Restrict class access to certain methods (e.g. writing to a console)限制类访问某些方法(例如写入控制台)
【发布时间】:2015-10-01 17:52:21
【问题描述】:

有没有办法可以限制类或类对象对某些功能的访问(例如写入控制台)?

我目前有一个从控制台写入和读取的主控制台项目。它还加载各种 .dll 库文件(如小程序)并使用它们的方法。

我想知道是否有办法让这些 .dll 程序集请求许可或限制它们对控制台输入/输出的直接访问并通过例如班级调解员/经理。

假设有人正在为我的项目编写扩展程序(小程序)。我不希望它随意写入我的控制台应用程序。

附:我的问题不一定只适用于控制台应用程序。

【问题讨论】:

  • 如果那些 DLL 在内部调用Console,那么有人就很不正常了。我认为你能做的最好的事情就是为你的框架制定一个明确定义的规范,而不是为你的框架实现 .dll。
  • 具体到控制台,可以do that
  • @YuvalItzchakov 我想取消他们的 Console.WriteLine 如果他们不应该有使用它的权限。他们会知道他们不应该这样做,但你知道他们是黑客:D
  • @Sinatr 这行得通,尽管程序集总是可以使用 OpenStandardOutput() 将输出重定向回来...

标签: c# .net console restriction


【解决方案1】:

我建议您编写自己的 CustomConsole 以避免任何人使用它。由于原始控制台是标准的并且内置于操作系统本身,因此控制它的唯一方法是 Sinatr 告诉您的。然后他们可以再次打开它。如果您使用自己的控制台,您将不必担心谁在其中编写。在您始终可以将标准控制台传递给您的“经理”以过滤消息并保留您想要的消息并删除其他消息之后。

至于原来的问题。我不知道有什么方法可以阻止一个类使用其他类的方法。这只会使外部代码可能不稳定。我强烈建议您使用一些跟踪工具并扫描外部库所做的调用,以了解它们使用了什么(如果它们绝对不应该调用特定方法)。如果外部代码不适合您的程序,请避免使用它。

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2015-10-14
    相关资源
    最近更新 更多