c# - 将从抽象类变为密封类打破简单的客户端使用

标签 c#

我正在将一个类从 public abstract AwesomeClass 更改为 public sealed 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";
}

并且您将abstract class Foo更改为sealed class FooUpdateFooBar(Foo foo)会继续工作吗?

是什么阻止了您尝试?但是,是的,它会。

关于c# - 将从抽象类变为密封类打破简单的客户端使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635680/

相关文章:

c# - 编译错误 : 'The type or namespace name ' Runtime' does not exist in the namespace 'MyAppNamespace.System' (are you missing an assembly reference? )'

c# - 加载大型 XML 文件时如何解决 System.OutOfMemoryException

c# - 从 XML 转换数组

javascript - 如何从模型创建数组?

c# - 如何从 DataGridTemplateColumn.CellTemplate 访问按钮

c# - 使具体的返回类型通用

c# - CoreCompact.System.Drawing 实现

c# - DateTime.Month.ToString(“MMM”)无法正常工作

c# - 检查两个 XML 文件在 C# 中是否相同?

c# - 使用 TimeSpan 转换 LINQ 查询时出错?到列表<>?