【问题标题】:How to add 2 new() constraint for to type parameters?如何为类型参数添加 2 个 new() 约束?
【发布时间】:2012-08-27 14:25:38
【问题描述】:

我想要这样的东西:

public static TTo JumpTo<TFrom, TTo>(this TFrom from_page) 
       where TTo : new() TFrom : new()
{
    ...
}

我想强制 TFrom 和 TTo 都是从基类型派生的。

我想把这个方法做成TFrom类型的扩展方法

有可能吗?正确的语法是什么?

【问题讨论】:

  • @AD.Net:您对这种需求有何看法?编辑:那不会编译。
  • 顺便说一句,输入参数上的new 约束实际上没有意义,除非您在内部复制内容。
  • @AD.Net:这听起来更像是 VB.NET,除了在 VB.NET 中它会是 Of TTo As SomeType, TFrom As SomeOtherType,所以实际上根本不是
  • 你们是对的,我的语法错了!

标签: c# .net generics syntax generic-constraints


【解决方案1】:

在每个类型前加上关键字where

public static TTo JumpTo<TFrom, TTo>(this TFrom from_page) 
    where TTo : SomeBaseType, new() 
    where TFrom : SomeOtherBaseType, new()
{
     ...
}

【讨论】:

  • 谢谢,我想将 JumpTo 作为 TFrom 的扩展方法。有可能吗?
  • @smwikipedia:您的编辑就是这样做的!你添加到一个静态类。
  • @smwikipedia 是的,您可以将其设为扩展方法。
  • 目前,我将该方法放入静态类中。但该方法并未针对 TFrom 类型显示。我还在尝试。
  • @smwikipedia 请发布一个完整的示例,包括包含的静态类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多