在我的后端,我有一个界面,它定义了两种类型:
public class FilterRange
{
public double? Min { get; set; }
public double? Max { get; set; }
}
public class FilterRange<T> where T : struct
{
public T? Min { get; set; }
public T? Max { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第一类是遗留类.第二个是我刚刚定义的新类,因此我可以使用除double之外的其他类型(在本例中为int).
在前端,我有一个遗留类的视图模型:
public class FilterRangeBaseViewModel<T> : ViewModelBase<T>, IDataErrorInfo
where T: FilterRange, new()
{
public FilterRangeBaseViewModel(T model)
: this(model, "F2")
{
}
public FilterRangeBaseViewModel(T model, string formatString)
: base(model)
{
this.FormatString = formatString;
CreateErrorDictionary();
SetTextValues();
}
// More code below
}
public class FilterRangeViewModel : FilterRangeBaseViewModel<FilterRange>
{
public FilterRangeViewModel(FilterRange model)
: base(model)
{
}
public FilterRangeViewModel(FilterRange model, string formatString)
: base(model, formatString)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我正在努力定义,FilterRangeViewModelBase以便我可以使用我的新泛型FilterRange类.
我觉得有点像
public class FilterRangeBaseViewModel<T> : ViewModelBase<T>, IDataErrorInfo
where T: FilterRange<U> where U : struct, new()
Run Code Online (Sandbox Code Playgroud)
可能有用,但事实并非如此.
我的视图模型的正确定义是什么?
您需要同时定义T和U在你的类类型参数.
public class FilterRangeBaseViewModel<T, U> : ViewModelBase<T>, IDataErrorInfo
where T: FilterRange<U>, new() where U : struct
Run Code Online (Sandbox Code Playgroud)
根据评论编辑.
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |