3 回答

TA貢獻1830條經驗 獲得超3個贊
沒有“朋友”的直接等效項-可用的最接近(并且不是很接近)的是InternalsVisibleTo。我只用過此屬性進行測試-非常方便!
示例:放置在AssemblyInfo.cs
[assembly: InternalsVisibleTo("OtherAssembly")]

TA貢獻1780條經驗 獲得超4個贊
壁櫥的等效項是創建一個嵌套類,該類將能夠訪問外部類的私有成員。像這樣:
class Outer
{
class Inner
{
// This class can access Outer's private members
}
}
或者,如果您希望將Inner類放在另一個文件中:
Outer.cs
partial class Outer
{
}
Inner.cs
partial class Outer
{
class Inner
{
// This class can access Outer's private members
}
}

TA貢獻1793條經驗 獲得超6個贊
采取非常常見的模式。類工廠制作小部件。Factory類需要對內部進行處理,因為它是Factory。兩者都在同一個文件中實現,并且根據設計,需求和性質,它們是緊密耦合的類-實際上,Widget實際上只是工廠的一種輸出類型。
在C ++中,將Factory設為Widget類的朋友。
在C#中,我們能做什么?我想到的唯一體面的解決方案是發明一個接口IWidget,該接口僅公開公共方法,并具有Factory返回的IWidget接口。
這涉及大量的乏味-再次在界面中暴露所有自然的公共屬性。
- 3 回答
- 0 關注
- 350 瀏覽
添加回答
舉報