使用“指纹”调用方法

时间:2013-12-23 15:08:43

标签: c# security plugins methods

我想要有检查调用者“指纹”的方法。例如:我有一个修改某些值的方法。不应允许第三方类修改值“ID”,但应允许内部类。

我不想提交类的类型,以便该方法可以检查此类是否在允许的其中一个程序集中。 是否有可能自动提交此类型?

或者有替代方案吗?这是因为我的应用程序允许AddIns。这些应该在某些行动中受到限制。出于这个原因,我需要一个非常灵活的系统,它不需要为每种方法添加太多代码或复杂的东西。

由于

2 个答案:

答案 0 :(得分:0)

为什么不简单地将setter声明为internal。这将使成员只能访问程序集中的类。

答案 1 :(得分:0)

嗯,你可以使用至少三个选项。

首先,您需要这些值只能在程序集中修改 - 这就是internal关键字提供的内容。如果您有多个需要访问权限的程序集,请考虑使用Friend Assemblies。要使变量对公众可见但不可修改,您可以这样设置:

public SomeType ID { get; internal set; }

其次,虽然它很快变得更加复杂,但您可以使用上面但使用受保护的集合,并强制用户通过基于方法的系统来修改值,允许您限制,记录和以其他方式执行某些逻辑在这些行动中。不是最简单的方法。

第三个是我能想到的最糟糕的解决方案,那就是使用Reflection来检查调用你的setter方法的内容。这不仅涉及Get和Set属性中的复杂代码,而且还可能导致为您的系统编写插件的任何人的陷阱,因为他们将Setter视为公共,即使它有额外的限制。