C#:传递通用对象

2024-01-03

我想要一个通用的打印功能...PrintGeneric(T)...在以下情况下,我缺少什么?

一如既往,感谢您的帮助/见解......

public interface ITest
{}

public class MyClass1 : ITest
{
    public string myvar = "hello 1";
}

public class MyClass2 : ITest
{
    public string myvar = "hello 2";
}

class DoSomethingClass
{

    static void Main()
    {
        MyClass1 test1 = new MyClass1();
        MyClass2 test2 = new MyClass2();

        Console.WriteLine(test1.myvar);
        Console.WriteLine(test2.myvar);             
        Console.WriteLine(test1.GetType());

        PrintGeneric(test1);
        PrintGeneric<test2.GetType()>(test2);
    }

    // following doesn't compile
    public void PrintGeneric<T>(T test)
    {
        Console.WriteLine("Generic : " + test.myvar);
    }
}

它无法编译,因为 T 可以是任何东西,而且并不是所有东西都会有myvar field.

你可以做myvar的财产ITest:

public ITest
{
    string myvar{get;}
}

并将其作为属性在类上实现:

public class MyClass1 : ITest
{
    public string myvar{ get { return "hello 1"; } }
}

然后对您的方法施加通用约束:

public void PrintGeneric<T>(T test) where T : ITest
{
    Console.WriteLine("Generic : " + test.myvar);
}

但在这种情况下,说实话,你最好只传递一个 ITest:

public void PrintGeneric(ITest test)
{
    Console.WriteLine("Generic : " + test.myvar);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:传递通用对象 的相关文章

  • 语言混合:模型和视图

    考虑开发一个应用程序 其中模型将使用 C 使用 Boost 编写 视图将使用 Objective C 使用 Cocoa Touch 编写 哪里有一些示例展示了如何集成 C 和 Objective C 来开发 iPhone 应用程序 直接从源
  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 如何将 C++ 类包装在基于 C 的 dll 或基于 CLI 的 dll 中?

    我被告知将我用 C 编写的类导入到 dll 中 然后在 c 应用程序中使用该 dll 下列的本指南 https stackoverflow com questions 4555961 how to use a class in dll我创建
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 如何检查 .NET 4.0 中的泛型参数是否是动态的

    我有课ObjectMapper
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • TestMethod:异步任务 TestSth() 不适用于 .NET 4.0

    我正在尝试使用 NET 4 0 BCL Async 和 MsTest 运行异步测试方法 看来这个设置不能处理 测试方法 异步Task测试Sth 由于测试用例资源管理器中缺少条目 将签名更改为异步后void 我可以运行测试用例 但结果错误 根
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • CMake 警告:无法为目标生成安全的链接器搜索路径

    在为 pcl 项目运行 CMake 时 我收到一条警告消息 Configuring done CMake Warning at CMakeLists txt 12 add executable Cannot generate a safe
  • 使用正则表达式匹配以“Id”结尾的单词?

    如何组合一个正则表达式来匹配以 Id 结尾的单词并进行区分大小写的匹配 试试这个正则表达式 w Id b w 允许前面的单词字符Id和 b确保Id位于单词末尾 b是字边界断言
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • 在 C# 中生成随机值

    如何使用以下命令生成随机 Int64 和 UInt64 值RandomC 中的类 这应该可以解决问题 这是一个扩展方法 因此您可以像调用普通方法一样调用它Next or NextDouble上的方法Random目的 public stati
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • .NET 的 HttpWebResponse 是否会自动解压缩 GZiped 和 Deflated 响应?

    我正在尝试执行一个接受压缩响应的请求 var request HttpWebRequest HttpWebRequest Create requestUri request Headers Add HttpRequestHeader Acc
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • 获取大于某个数字的元素个数

    我正在尝试解决以下问题 数字被插入到容器中 每次插入数字时 我需要知道容器中有多少元素大于或等于当前插入的数字 我相信这两个操作都可以以对数复杂度完成 我的问题 C 库中有标准容器可以解决这个问题吗 我知道std multiset可以在对数
  • 请解释为什么Java和C对此代码给出不同的答案

    public class Test public static void main String args int i 10 i i System out println value of i is i 输出是 10 当我在中执行类似的代码
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 是否可以使用 MSDeploy 修改现有站点的 web.config?

    是否可以使用 MSDeploy 修改 或替换 现有站点的 web config 可以替换 Web 配置文件的某些部分 使用 xPath 查询或正则表达式指定 为此 请使用 declareParam 和 setParam 命令行开关 Like
  • Pandas 强制 NaN 位于每个索引的每列底部

    我有一个 DataFrame 其中多个行跨越每个索引 以第一个索引为例 其结构如下 df pd DataFrame A first 1 0 1 0 np NaN np NaN np NaN 2 0 np NaN 2 0 np NaN np
  • 关闭从 mysql.connector python 到 mysql 的池连接

    我正在使用 mysql connector 包并使用进行连接池MySQLConnectionPool班级 我有一个长时间运行的进程 运行此进程时 所有池连接在不规则的时间段模式中保持空闲状态 源代码中有 remove connections
  • 我可以对我自己的非指针类型使用“空指针优化”吗?

    当你有一个Option lt T gt 编译器知道NULL永远不是一个可能的值 T and 编码None变体为NULL instead https stackoverflow com q 16504643 155423 这可以节省空间 us
  • 如何按列累积numpy数组中的值?

    我如何使用numpy累加器 http docs scipy org doc numpy dev reference generated numpy ufunc accumulate html numpy ufunc accumulate a
  • 身份和自定义表之间的多对多关系。 EF7 - 代码优先

    如何在 Identity 3 0 中的 AspNetRoles 和我的自定义表之间建立多对多关系 我想要简单的 3 个表 其中包含 PermissionId 和 RoleId 例如 AspNetUsersRole 我有这样的事情 publi
  • 如何从rails控制台获取详细的错误消息?

    假设我希望从控制台创建一个用户 其中包含电子邮件already存在 如果我做User create 由于模型验证 在这种情况下的独特性 create失败 rails 控制台中的输出将显示 rollback transaction 用户未保存
  • :has 与 :matches - 选择器级别 4

    只是想知道CSS 选择器4 伪选择器之间有什么区别 has and matches 规格http dev w3 org csswg selectors 4 overview http dev w3 org csswg selectors 4
  • 如何从 Jenkins 将节点应用程序部署到远程主机?

    这是节点应用程序目录根目录中的 Jenkins 文件 pipeline agent any triggers pollSCM stages stage deploy steps sh scp 我将 Jenkins 配置为连接到远程 gitl
  • 显示图像时出现奇怪的 matplotlib 行为

    当范围 0 255 内的常规 RGB 图像转换为 float 然后由 matplotlib 显示时 图像将显示为负数 如果它被转换为 uint8 它会正确显示 当然 这给我弄清楚发生了什么造成了一些麻烦 因为我不小心将其中一张图像投射为浮动
  • gpiod - 在设备树中使用标签

    我想用libgpiod通过自定义板上的用户空间控制一些 GPIO 我有一个 i MX6UL 处理器 它有数百个引脚 我将只使用其中 8 个 作为 GPIO 我读到了关于libgpiod因为它正在取代旧的 sysfs API 我很高兴您可以为
  • Summernote createRange 与 HTML

    我的 Summernote 编辑器中的某些文本包含 HTML 我想要让用户选择的文本与编辑器中的文本完全相同 到目前为止我看到的所有答案都告诉我使用这个 summernote summernote createRange toString
  • .NET MVC 4 WebAPI POST 不起作用

    核心问题 GET 有效 POST 无效 我是 WebAPI 的新手 所以我可能做了一些愚蠢的事情 但我在网上查了很多资料 试图找出为什么这不起作用 相当简单的 WebAPI C 应用程序 我试图将其简化为非常简单的路线 config Rou
  • X11 窗口调整大小时卡顿

    我正在 X11 中创建一个 openGL 窗口并使用glxswapbuffers用于双缓冲 问题是 渲染看起来不错 但在调整大小时 openGL 内容会跳来跳去 窗口边框会出现卡顿现象 我尝试过滤ConfigureNotify事件 延迟它们
  • Pandas `isin` 函数的更快替代方案

    我有一个非常大的数据框df看起来像 ID Value1 Value2 1345 3 2 332 1355 2 2 32 2346 1 0 11 3456 8 9 322 我有一个包含 ID 子集的列表ID list 我需要有一个子集df为了
  • ViewData 是 ASP.Net 5(核心)中 ViewBag 的新标准吗?

    我注意到 在我从 Microsoft 看到的 ASP Net 5 核心 的所有示例和教程中 VS 2015 中的默认 Web 应用程序模板使用 ViewData XXX 代替 ViewBag XXX 这是现在推荐的从控制器传递数据的方法吗
  • 角度附加组件到各个选项卡

    我正在尝试使用角度材料将组件 动态创建 附加到相应的选项卡 viewChild但只有当我单击第二个选项卡中的按钮时 它才会转到第一个选项卡 Here is Stackblitz 角度附加组件到各自的选项卡 https stackblitz
  • 在 Objective-C 中,如何从类别访问私有属性

    我想从类的类别中访问该类的私有属性 但要访问私有财产 我必须在类别中重新声明相同的私有财产 如果我不重新声明 我会收到编译错误 Property
  • 使用 Commons Multiparthttpservlet 解析器上传文件

    我在 Spring Boot 中做了一个服务 在 Reactjs 中做了前端 但我的服务没有提供任何东西 没有结果 我正在上传带有文件图像或音频的表单数据 但我的休息服务没有收到任何文件 我的服务等级 CrossOrigin Request
  • C#:传递通用对象

    我想要一个通用的打印功能 PrintGeneric T 在以下情况下 我缺少什么 一如既往 感谢您的帮助 见解 public interface ITest public class MyClass1 ITest public string