从另一个类访问私有方法

Fra*_*sco 7 c#

我有两个存储库类(RepositoryFactoryBaseRepository)在同一个项目中实现不同的接口.本BaseRepository类有将现在需要也在其他类,有相同的实现私有方法.

我没有复制方法以保持隐私,而是考虑了一种可能的替代方法,尽管到目前为止我找不到一个好的解决方案,因为根据定义,私有方法只在其自己的类中具有范围.

使用继承并将方法更改为"protected"也不是一种选择,因为这两个类在语义上没有链接.因为返回类型为void,所以我不能使用公共属性来返回方法的结果.

Jai*_*ero 15

你可以使用反射.这是一个例子:

MethodInfo privMethod = objInstance.GetType().GetMethod("PrivateMethodName", BindingFlags.NonPublic | BindingFlags.Instance);
privMethod.Invoke(objInstance, new object[] { methodParameters });
Run Code Online (Sandbox Code Playgroud)


Rom*_*kov 8

在C#中做不到你想做的事是不可能的.您可以拥有的最接近的是internal,使该成员对整个装配体可见.也可以将这两个类设为私有并嵌套在另一个类中,但这并不总是合适的.

在C#工作的Mads Torgersen对此有这样的说法:

我已经看到了许多试图解决"类集可访问性"概念的提案.当然,复杂性是,与现有的可访问性不同,还没有一个自然组(每个人,汇编,派生类,单个类)将它绑定到,所以即使使用另一个可访问性修饰符,您仍然需要语法(或某些东西)来定义组.

切割它有几种方法.我没有看到一个明显正确的提案,但我认为问题是相关的,我将与设计团队一起讨论.

(来源)