C#:简化泛型声明

C#:简化泛型声明,c#,generics,C#,Generics,我在C#中使用泛型,我觉得我的类型规范中有冗余信息 我有一个名为ipParameterizedViewModel的接口,它是参数类型的通用接口。我还有另一个抽象类(android活动),它使用这种ViewModel public interface IParameterizedViewModel<TParameter> : IBaseViewModel { } abstract class BaseActivity<TViewModel, TParameter> : B

我在C#中使用泛型,我觉得我的类型规范中有冗余信息

我有一个名为
ipParameterizedViewModel
的接口,它是参数类型的通用接口。我还有另一个抽象类(android活动),它使用这种ViewModel

public interface IParameterizedViewModel<TParameter> : IBaseViewModel
{
}

abstract class BaseActivity<TViewModel, TParameter> : BaseActivity<TViewModel>
    where TViewModel : IParameterizedViewModel<TParameter>
{
    // Somewhere in here, we use the TParameter type,
    // so it's important to know the type.
}
现在是这样的:最后一个定义,
DetailsActivity
对于参数类型
Details
,看起来是多余的,因为该类型也包含在
IDetailsViewModel

由于
IDetailsViewModel
类型中已经指定了
detailsviewmodel
类型,是否有办法删除
Details
类型

class DetailsActivity : BaseActivity<IDetailsViewModel>
{
}
类详细信息活动:BaseActivity
{
}

了解您使用的是
IDetailsViewModel
,这对
详细活动
是否很重要?或者,
ipParameterizedViewModel
是否足够?不幸的是,您的问题缺少一个好的答案,因此不清楚适用于您的场景的所有约束。(我也肯定你不是第一个问如何避免两次指定相同的泛型类型的人……这确实时常出现。因此,你的时间应该花在搜索堆栈溢出上,因为你的问题是重复的,而且几乎肯定存在。)是的,我确实搜索过类似的问题。我发现了一些问题很接近,但没有一个完全相同。同样是的,
DetailsActivity
必须知道它使用的是
IDetailsViewModel
。我稍后会尝试发布一个更完整的示例。请随意指出缺失的内容,因为我觉得这很完整。
class DetailsActivity : BaseActivity<IDetailsViewModel>
{
}