c# - 仅传递一个定义其他泛型的泛型类型
问题描述
我有以下方法:
public void SomeMethod<TParser, T1, T2> () where TParser : IParser<T1, T2>, new()
{
...
}
以及一个IParser<T1, T2>
接口和一个实现它的类:
public interface IParser<T1, T2>
{
...
}
public class Parser : IParser<string, int>
{
...
}
现在我的问题是是否可以只传递TParser
给该方法,因为有一个约束集有点定义T1
和T2
. 那么是否可以执行以下操作:
SomeMethod<Parser>();
我想这是不可能的,但会有类似的东西吗?
解决方案
您可以做的是定义接口的非通用版本。并从中派生您的通用接口并使用非通用版本作为约束。如果你有类型的参数, T1
这T2
将没有用。
internal interface IParser
{
... // if you can define any. or it can be empty also
}
public interface IParser<T1, T2> : IParser
{
...
}
并将您的方法签名更改为:
public void SomeMethod<TParser> () where TParser : IParser new()
{
...
}
推荐阅读
- sql - 交叉应用中的列到行两个表
- angular7 - 通过邮寄发送数据的问题,路由器错误
- php - 我可以将所有 SQL 查询写入 phpMyAdmin / HTML 文件还是需要使用其他程序?
- linux - 如何从脚本运行另一个脚本并自动回答提示
- javascript - Webpack 优化 splitChunks - 生成的 webpack 文件
- puppet - 如何使用 rspec 在 puppet 中模拟 puppet validate_cmd?
- javascript - 为什么即使我包含了参考资料,jquery marquee 也不起作用?
- django - 将 Django 部署到 Google Cloud 时,HTML 图标未正确加载
- .htaccess - 全部重定向到索引,无法获取 robots.txt
- javascript - 如何使用 axios 和代理服务器进行 https 调用?