【发布时间】:2021-10-29 20:57:15
【问题描述】:
我希望只为一个类的列表调用一些方法。
虽然只能为 List 定义扩展方法,但它无法访问目标类中的私有字段(参见代码),因为它被视为完全不同的类类型。
我知道在 C++ 中,friend 可以设置一些方法访问私有数据。但是C#不能
那么,有没有什么优雅的模式可以在 T 和 List 之间共享私有数据?
例如:
class Solid
{
private Faces[] f;
...
}
public static class SolidExtensions
{
public static Solid Merge(this IList<Solid> Solids)
{
//Get all faces from Solids. //not possible
return Build(faces);
}
}
【问题讨论】:
-
也许
internal可以帮助你?否则你可能会重新考虑一个扩展方法并让 marge 成为一个类成员 -
@TheGeneral Internal 是个好主意。我只是好奇是否有任何想法可用于明确地将方法与不同级别的对象分开。
标签: c#