今天我的思维僵化了,无法想出一种干净的方式来强制编译器使用继承实现泛型推断。
想象一下以下4个类: 模型
现在从我的逻辑上讲,我应该认为当我从继承
有没有什么办法可以强制编译器为我解决这个问题?
例如:
如果我当前想使用
我该如何在保留对TModel类型的编译时访问权限的情况下,将TModel参数从所有位置中删除?例如通过基础Model属性访问。以下类似代码是否可行:
当调用它时,只需指定例如即可,这将是完美的解释。
不是...而是...
想象一下以下4个类: 模型
public abstract class Model
{
}
public class CodePerfModel : Model
{
}
实体
public abstract class ModelEntity<TModel> where TModel : Model
{
public TModel Model { get; set; }
}
public class CodePerfEntity : ModelEntity<CodePerfModel>
{
}
现在从我的逻辑上讲,我应该认为当我从继承
ModelEntity<>
的某些东西中获取内容时(它将指定TModel
的类型),因为任何继承自ModelEntity<>
的类都必须指定它。有没有什么办法可以强制编译器为我解决这个问题?
例如:
如果我当前想使用
ModelEntity<>
,我必须为其指定一个类型,如下所示:public class CallerClass<TEntity, TModel>
where TEntity : ModelEntity<TModel>
where TModel : Model
{
}
我该如何在保留对TModel类型的编译时访问权限的情况下,将TModel参数从所有位置中删除?例如通过基础Model属性访问。以下类似代码是否可行:
public class CallerClass<TEntity>
where TEntity : ModelEntity<>
{
}
当调用它时,只需指定例如即可,这将是完美的解释。
SomeCall<CodePerfEntity>();
不是...而是...
SomeCall<CodePerfEntity, CodePerfModel>();
这是目前是否可行的事情?
对于C# 6/7来说,这是否值得提出?