基于语言的条件代码?

时间:2012-03-12 22:14:39

标签: c# unsafe

我正在为C#编写一个库。我想知道如果在C#项目中使用库是否可以只有方法/字段,并且如果它在Visual Basic等其他.NET语言中使用,则无法访问这些方法。这样做的原因是因为有一些函数/字段只对不安全的代码有用,如果它们可用于Visual Basic,如果它们没有任何用处,那将会有点愚蠢。

根据使用它们的语言,是否可以只提供某些类/方法/字段?如果不是,我可以很容易地只有2个独立的程序集可供下载,即一个用于C#,一个用于VB.Net。或者我可以简单地包括额外的方法(但是我想防止那些不熟悉指针和不安全代码的人混淆,只是为了防止用户搞乱不安全的方法并且不小心做了些傻事,但我猜它真的没关系!)。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

根据使用它们的语言,是否可以只提供某些类/方法/字段?

没有

  

我希望避免与那些不熟悉指针和不安全代码的人混淆,只是为了防止用户乱用不安全的方法并意外地做些傻事。

使用抽象。使用接口/基类创建一个程序集,并为一些消费者提供与另一个消费者组装在一起的安全实现和其他消费者与基本程序集以及另一个公开高级功能的消费者。

或者,您可以使用一个具有内部方法的程序集,并使用InternalsVisibleToAttribute,如果您知道哪些“高级”程序集将使用它。

答案 1 :(得分:0)

据我所知,没有办法确定召集你的一个集会的语言,因为到了发生的时候,每个人都在谈论IL(或者更确切地说是编译指令)。

我认为在这种情况下,最好的选择是根据条件编译两个不同版本的程序集,并根据用户使用的语言将它们提供给用户。或者您可以只包含所有代码并告诉VB用户不要访问某些功能。

我必须承认,我不确定你在这里做什么会将暴露不安全的任何事情告诉来电者;一些IntPtr或什么?