`

c# - design of generic version of interface with its non generic verion

    博客分类:
  • C#
c# 
阅读更多

sometimes you may want to design some interfaces so that it can handle both generic classes and the non-generic classes.  The reason for oding this is 1. for backward compatability 2. you may deal with data with determined parameter type T or data whose type is object. 

 

A typical example of this is the IEnumerable interface, where 

 

public interface IEnumerable
{
    IEnumerator GetEnumerator();
}


 
public interface IEnumerable<out T> : IEnumerable
{
    IEnumerator<T> GetEnumerator();
}

 

 

Below I provided the skeleton to implements such classes that inherits from the generic/non-generic interfaces. 

  interface IInterface
  {
    object Object { get; } 
  }

  interface IInterface<T> : IInterface
  {
    T Object { get; } 
  }

  class NonGeneric : IInterface
  {
    protected object obj;

    public object Object { 
      get { return obj; } 
    } 
  }

  class Generic<T> : NonGeneric, IInterface<T>, IInterface
  {
    object IInterface.Object { get { return base.obj; } }

    public T Object { get { return (T)base.obj; } }

  }

 

分享到:
评论

相关推荐

    temporary-add-to-verion-control:将现有的R Project与Github关联起来

    在IT行业中,版本控制是项目开发中的重要环节,它能够帮助团队协作,追踪代码更改,以及备份和恢复项目。R语言作为一个广泛用于数据分析和统计计算的编程环境,其项目管理同样受益于版本控制系统,比如Git。...

    VC资源文件版本更新工具 (与Subversion版本同步)

    Mark the revision of verion info in a rc file as svn revision of current working directory. Usage: VersionMaker [-?] -rc rc-file -? display this help. -rc rc-file specify the .rc file name. ...

    ARMCC Compiler Verdion 5编译器

    ARMCC Compiler Version 5是ARM公司推出的一款针对嵌入式系统开发的专业C/C++编译器,尤其在微控制器(如ARM Cortex系列)领域广泛应用。它为开发者提供了高效、优化的编译工具链,能够将源代码转换为针对特定ARM...

    RemoveSymantecMacFiles.command

    This is the default as of verion 7.0.73. -F List only regular files that are currently installed and that would be deleted. No note is added if a file is not supposed to be removed by Symantec ...

    goderive:在您的类型上方添加派生注释,并为标记的类型生成源代码-Source code collection

    $ goderive --verion # show git version information Version: xxxxxxx 用法 $ goderive help GoDerive Add derive comment above your type, and generate source code for the marked type. Comm

    VSIPL verion1.4

    VSIPL(Very Short Instruction Word Instruction Set)是一种为信号处理应用设计的指令集标准,它的版本1.4是一个在2013年发布的软件协议标准。在本文中,我们将详细解读VSIPL版本1.4软件协议中的主要知识点,包括...

    HX3313_Datesheet_verion1.2.pdf

    根据提供的文件信息,“HX3313_Datesheet_verion1.2.pdf”是一份关于HX3313心率传感器的数据表文档。该传感器由南京天亿合鑫电子有限公司制造,具有超低功耗、光学心率监测及接近检测等功能,并支持I2C接口。以下是...

    centos7.x-ssh9.3p1-ssl1.1.1u一键升级脚本

    centos7.x_ssh9.3p1_ssl1.1.1u升级脚本, 特点: 1、同时升级openssh与openssl,采用rpm包形式,一键快速升级版本,无需每台单独再次进行编译, ...[root@localhost ~]# openssl version OpenSSL 1.1.1u 30 May 2023

    ccna1 exam

    【描述】"CCNA1 Exam Verion1 and Version4" 提示我们关注的是两个不同版本的考试内容。Version1可能是较早期的考试格式,而Version4则代表了更新的考试大纲,可能涵盖了更现代的网络技术和协议。这两个版本可能在...

    version.js:使用查询字符串的开关测试其他脚本版本

    注意:该项目已弃用,不再维护。 如果您想继续支持分支版本,请在Twitter( )上进行搜索以在此处列出它。 版本.js 使用查询字符串的开关测试不同的脚本版本。...使用Version.js并将您的设置简化为单个测试运行器:

    GAMIT/GLOBK MATLAB TOOLS

    When running from MATLAB this verion of the m-files should be downloaded. The m-files are in a folder called matlab and in this folder are folders for tsview and velview. To run the velview and ...

    这是一个基于龙芯处理器v2.12.92的定制qemu verion

    这是一个基于龙芯处理器v2.12.92的定制qemu verion。目前它支持以下龙芯板:福龙2e 福龙2E迷你电脑:LS1A MIPS LS1A 平台。LS1B MIPS LS1B 平台。LS1C MIPS LS1C 平台。LS232 MIPS LS232 平台。LS2F1A MIPS LS2F1A ...

    华硕飞行堡垒BLOS 301Verion

    华硕飞行堡垒BLOS 301稳定版本升级,解决游戏卡顿等问题,该版本已测试确认稳定。

    SQLSysClrTypes.msi安装ReportViewer2015前必须要安装的软件

    SQLSysClrTypes.msi,安装ReportViewer2015前必须要安装的软件

    addflow(from 1999)_verion3.0_ActiveX

    AddFlow ActiveX ControlCopyright (c) 1997-99 Lassalle TechnologiesLicense number: 1887 7799 2978 2253

    Bandicam Version 2.X Cracked

    Bandicam ver 2 Cracked ...2. Extract the zip file 3. Run as Administrator with "Bandicam 2.X Crack.exe" 4. Click on Crack Bandicam for ver 2.0 or high and Register Bandicam for verion 1.0 to 1.9

    Cisco Packet Tracer 6.1.1

    A newer verion, Packet Tracer 6.1.1 has been released at the end of august. This is a minor release correcting bugs found in the previous 6.1.0.0120 version. 官网说明:...

    gradle-dep-extract-plugin:一个gradle插件,用于将traget项目的所有maven依赖关系提取到json文件中。 并将其可视化为漂亮的图形

    该插件的${lastest-version}是 。 将以下代码复制到您的android应用程序项目的build.gradle中。 buildscript { repositories { maven { url " ...

    从 NSBundle 获取 ap verion

    react-native-app-info 安装 $ npm install react-native-app-info --save $ rnpm link react-native-app-info 用法 var AppInfo = require('react-native-app-info'); console.log("应用版本号",AppInfo....

    hackware:Hackware每月聚会的介绍幻灯片

    如果聚会已经结束,则用{HACKWARE_VERION}标记发布 # git tag -a {HACKWARE_VERSION} -m "Hackware {HACKWARE_VERSION}" # template git tag -a v1.4 -m " Hackware v1.4 " # example git push --tags 整理 2个月:...

Global site tag (gtag.js) - Google Analytics