c# - 使用抽象方法时请解释这种模式

标签 c# oop class-design abstract-class abstract-methods

我在很多地方看到过以下模式:

abstract class SimpleProvider<T> 
{
    public object Create(IContext context) 
    {
        return CreateInstance(context);
    }

    protected abstract T CreateInstance(IContext context);
}

我不明白实际的区别,为什么不直接写成:

abstract class SimpleProvider<T> 
{
    public abstract T Create(IContext context);
}

更新:以上片段取自 Ninject 的文档没有指定接口(interface),但查看实际源代码我可以看到 SimpleProvider<T>实现接口(interface) IProvider这解释了子调用的必要性并回答了我的问题。

最佳答案

所以唯一的区别是返回类型(Object 而不是 T),这意味着调用者需要强制转换。

我能想到这样做的唯一原因是,如果它们实现了一个具有 object Create(IContext context);

的接口(interface)

关于c# - 使用抽象方法时请解释这种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225657/

相关文章:

c++ - 如何使父类不重复已执行的祖父方法

c# - 在 WPF 日历上标记特定日期

c# - Xamarin.Forms:使用披露按钮时删除缩进

c# - 如何在 C# ASP.NET 后面的代码中将背景图像设置为::在选择器之前

oop - 如何打破我的程序编码习惯?

C# 类设计 - 我应该考虑将 "Project"类放在哪里

c# - 从 StreamReader.ReadLine() 获取的字符串的编码是什么

c# - 为什么 System.Windows.Forms.Control 没有标记为可序列化?

php - 在 PHP 中创建对象数组

c# - 哎呀,这个作业里发生了什么