将非通用方法与通用方法相结合的模式(名称)是什么?

时间:2016-09-22 10:19:37

标签: c# .net generics design-patterns

我在开发过程中注意到了一种模式,并且已经看了一段时间,但令我震惊的是,我不知道它的技术名称,或者它是否有一个。我问这个问题的原因是我正在围绕这种行为构建一些类,我想在技术上如何正确地命名组件和/或命名空间来定义组件。

这是一个简单的例子:

public interface ICommand
{
    void Execute( object parameter );
}

public interface ICommand<in T>
{
    void Execute( T parameter );
}

public class Command : ICommand<int>, ICommand
{
    public void Execute( object parameter )
    {
        // What is the technical name 
        // of this behavior and/or relationship 
        // with its generics-based counterpart?
        if ( parameter is int )
        {
            Execute( (int)parameter );
        }
    }

    public void Execute( int parameter )
    {
        // We are now in strongly-typed parameter land...
    }
}

基本上,模式是:

  1. 获取传递给接受System.Object参数的方法的对象。我现在能想到的最好的名字是&#34;广义对象。&#34;
  2. 确定上一步中广义对象的类型。在我的例子中,我只是检查对象的类型。但是,其他情况可能需要进行价值转换/强制。
  3. 将now-strong-typed对象传递给第一步中描述的通用方法的强类型对象。
  4. 这个模式有名字吗?如果我在这里做了一些可怕的错误并且有一种更好/更好的方式来处理我正在做的事情,我也愿意接受反馈。

0 个答案:

没有答案