我有一个类似于
的通用结构public struct Range<T>
并且有From
类型的To
和T
两个属性。
该结构也有一个成员:
public bool FromGreaterTo
{
get { return (bool)Comparer<T>.Default.Compare(From, To) > 0 };
}
我为这个结构的属性创建了一个ValidationAttribute
。
在覆盖IsValid
方法时,我确实知道它属于Range<>
类型和T is int?
或其他类型。
如何动态转换value
参数(实际上是Range<>
属性),以便我可以访问FromGreaterTo
成员?
我已经尝试了类似
的内容private Range<T> Cast<T> (object valueToCast, T genericType)
{
return (Range<T>)valueToCast;
}
抛出异常,此演员表无效。
有关于此的任何想法或解决方法吗?
答案 0 :(得分:3)
使Range成为一个类并为其提供一个抽象基类。
public abstract class Range
{
public abstract bool FromGreaterTo { get; }
}
public class Range<T> : Range
{
// existing Range<T> code
}
然后,您可以将Range<T>
对象转换为Range
对象并调用其FromGreaterTo
属性。