C# 将从抽象类更改为密封类将破坏简单的客户端使用

C# 将从抽象类更改为密封类将破坏简单的客户端使用,c#,C#,我正在将一个类从公共抽象AwesomeClass更改为公共密封AwesomeClass。我还添加了一个新属性。所有现有成员不变。我知道这是一个突破性的变化。已实现AwesomeClass或依赖于它通过反射抽象的客户端将被破坏 我的问题是,那些只使用了我提供的AwesomeClass实例成员的客户机是否会被破坏(如果是,如何破坏)?没有一个客户端会依赖于我实现的AwesomeClass的任何类型,因为它们都是内部的。我想不是,但是 以下是课程前后的内容: public abstract class

我正在将一个类从
公共抽象AwesomeClass
更改为
公共密封AwesomeClass
。我还添加了一个新属性。所有现有成员不变。我知道这是一个突破性的变化。已实现
AwesomeClass
或依赖于它通过反射抽象的客户端将被破坏

我的问题是,那些只使用了我提供的
AwesomeClass
实例成员的客户机是否会被破坏(如果是,如何破坏)?没有一个客户端会依赖于我实现的
AwesomeClass
的任何类型,因为它们都是内部的。我想不是,但是

以下是课程前后的内容:

public abstract class AwesomeClass
{
    public abstract Guid SuperGuid { get; set; }
    public abstract int SuperInt { get; set; }
}

public sealed class AwesomeClass
{
    public Guid SuperGuid { get; set; }
    public int SuperInt { get; set; }
    public int OtherSuperInt { get; set; }
}

你的意思是当你有这个:

public abstract class Foo
{
    public string Bar;
}

void UpdateFooBar(Foo foo)
{
    foo.Bar = "Updated";
}
如果您将
抽象类Foo
更改为
密封类Foo
,则
更新foor(Foo Foo)
是否继续工作


是什么阻止你尝试?但是是的,会的。

我想你很好,但这只是因为我现在想不出一个反例……所以你是说你支持的外部API是某种形式的工厂/查询工具,它总是返回
AwesomeClass
对象?我的公共API引发了一些事件,其中包含
AwesomeClass
实例的集合。只有一个实现,是内部的。我想他是说他的所有实例类都继承了一个类,我认为它包含一些代码重用,所以如果他将该类密封起来,这种重用还会有效吗,对吗?如果你担心破坏客户端,我会发布一个新的端点,并将其标记为过时。如果它破坏了,很好的一点是,一个非常快速的测试将立即显示给你!我已经在问题中添加了类更改代码。第一堂课的成员都很抽象。我怀疑这有什么区别,但这和你的例子不同。我确实在一个样本中尝试了这个,但想再次检查。另外,最好将其公开,所以没有?@codecaster我会接受你的回答,但只是想知道是否有任何基于我之前的评论和更新的问题的更新?@bentayloruk就我所知,鉴于你提到的限制(类未被继承和所有)。