扩展可以访问同一程序集中的内部方法并由外部方法使用吗?
本文关键字:方法 外部 内部 访问 集中 程序集 程序 扩展 | 更新日期: 2023-09-27 18:06:15
在下面的代码片段中,假设这两个类都在同一个程序集中,外部程序集可以在OtherClass
上调用.DoSomethingToSomeClass();
吗?还是这会让我担心安全问题?
public class SomeClass
{
internal void DoSomething()
{
//hah!
}
}
public static OtherClassExtension
{
public static DoSomethingToSomeClass(this OtherClass target)
{
new SomeClass().DoSomething();
}
}
这绝对可以在没有安全问题的情况下工作。想象一下,如果不这样做,我们生活的世界将是什么样子:您编写的任何public
方法都必须只调用其他 public
方法。访问修饰符的作用是让你知道你的类的哪些部分(以及你写的哪些类)可以通过调用代码直接访问。在某些链中,它们可以被执行,这是不相关的。
这不会引起在。net方面的任何安全问题,也不应该。在公共方法中,你必须能够使用内部(/private/protected)成员。
对于这可能导致的潜在安全问题的解决方案是:创建public成员的开发人员必须知道他们在做什么。
"内部关键字是类型和类型成员的访问修饰符。内部类型或成员只能在同一程序集中的文件中访问"取自MSDN.
我不明白为什么不,这应该工作,你正在调用一个公共类调用内部方法在它自己的程序集。
老实说,所提供的代码没有任何问题。
你可以像传递参数一样传递someeclass,但这完全是设计决定的。