昨天我认为在WPF应用程序中实现我自己的Trigger会很不错.我创建了一个继承TriggerBase的类MyTrigger.TriggerBase是一个公共抽象类.所以继承不是问题.但是这个类中的构造函数标记为内部.编译器抛出错误,因为它不是有效的构造函数.为什么有人创建公共类但将构造函数标记为内部?
如果您希望该类可见,但只允许它在您自己的程序集中进行子类化.子类本身可以有公共构造 - 或者它们可以通过工厂访问.
我无法评论这是否是WPF中TriggerBase的一个好的设计决定,但在某些情况下它至少是合理的.
我能想到的一个原因是新实例的实际创建将由同一程序集中的另一个公共类处理.这会强制您通过另一个类创建实例 - 可能是某种工厂模式实现.