- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我为标题不明确表示歉意,我真的不知道还能怎么说。我将用代码进行演示。
public class CalculationService
{
private static Calculator<StaticInstrument, StaticResult> _staticCalculator;
private static Calculator<DynamicInstrument, DynamicResult> _dynamicCalculator;
private static readonly object IsInitializedLock = new object();
public byte[] ProcessStatic()
{
lock (IsInitializedLock)
{
_staticCalculator = new Calculator<StaticInstrument, StaticResult>();
}
return _staticCalculator.Calculate();
}
public byte[] ProcessDynamic()
{
lock (IsInitializedLock)
{
_dynamicCalculator = new Calculator<DynamicInstrument, DynamicResult>();
}
return _dynamicCalculator.Calculate();
}
}
除了 Calculator 对象的类型参数不同之外,我有许多相同的方法。
问题是,因为CalculationService
是 WCF 服务,它不能有任何类型参数。出于这个原因,我不能简单地创建一个静态成员 Calculator<TInstrument, TResult>
,因为我不能将类型参数放在 CalculationService
上.
我的理想解决方案是这样的:
public class CalculationService
{
private static Calculator<TInstrument, TResult> _calculator;
private static readonly object IsInitializedLock = new object();
public byte[] Process<TInstrument, TResult>()
{
lock (IsInitializedLock)
{
_calculator = new Calculator<TInstrument, TResult>();
}
return _calculator.Calculate();
}
public byte[] ProcessStatic()
{
return Process<StaticInstrument, StaticResult>();
}
public byte[] ProcessDynamic()
{
return Process<DynamicInstrument, DynamicResult>();
}
}
但我无法创建 private static Calculator<TInstrument, TResult> _calculator
未在 CalculationService
上指定类型信息的成员,这是我不能用 WCF 做的。
我能想到的唯一方法就是拥有
private static dynamic _calculator;
还有别的办法吗?如果可能的话,我宁愿避免使用动态,我不确定性能影响是什么,如果有的话。
最佳答案
我不认为我理解你后来关于“我的 CalculationService 类上只有 一个 Calculator 实例”的评论;相反,在我看来,每个
public class CalculationService {
private static class Inner<TInstrument, TResult> {
public static readonly Calculator<TInstrument, TResult> _calculator;
static Inner() {
_calculator=new Calculator<TInstrument, TResult>();
}
}
public byte[] ProcessStatic() {
return Inner<StaticInstrument, StaticResult>._calculator.Calculate();
}
public byte[] ProcessDynamic() {
return Inner<DynamicInstrument, DynamicResult>._calculator.Calculate();
}
}
关于c# - 创建一个没有在类上指定类型参数的泛型类型成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272618/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!