gpt4 book ai didi

c# - 如何制作内部界面图案?

转载 作者:行者123 更新时间:2023-12-02 00:37:43 25 4
gpt4 key购买 nike

我有许多类(具有不同的基类等),它们共享一个接口(interface)。

public interface IObjectWithSector
{
Sector Sector {get;}
}

但是,我的 Sector 基类(在与接口(interface)和所有实现基类相同的程序集中定义)有一个 public void AddObject(IObjectWithSector obj); 方法,其中包括必须包含 obj.Sector = this; 指令。这提出了一个问题。如果我在接口(interface)中公开 setter,所有消费者类都将能够设置 Sector,从而能够绕过我的 AddObject 方法内的逻辑。但如果我将其保留在公共(public)界面之外,即使 Sector 也看不到 setter 。我正在考虑“内部接口(interface)”,但这些东西并不好,因为我无法从它们继承公共(public)接口(interface),所以无论如何它都会是交叉转换。

最好的模式是什么?

最佳答案

不提供接口(interface),而是提供具有内部 setter 属性的基类。所有消费者都必须从该类派生。

您不能强制客户以某种方式实现只有您的程序集才能看到的东西。从客户的角度来看,这没有多大意义。如果他们需要实现您的 setter,他们也可以调用它。毕竟,这是他们的程序集中的代码。

但是,基类实现是由您自己提供的,因此可以具有内部成员。客户可以扩展它,但你可以保证内部的东西在那里,而且只有你可以看到它。

关于c# - 如何制作内部界面图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com