考虑以下课程:
public class ShortName
{
public string ValueString { get; set; }
private Type ValueType { get; }
public typeof(ValueType) Value
{
get
{
//do stuff
}
}
}
由于无法识别typeof(ValueType),因此无法实现。任何人都可以帮我定义“Value”属性类型作为ValueType返回的类型吗?
感谢
答案 0 :(得分:1)
这是完全不可能的 如果你仔细考虑它,它首先没有任何意义。
属性必须具有编译时类型;您正在尝试定义其类型仅在运行时已知的属性 你怎么能使用这个属性?
相反,您可以创建object
属性或使用泛型。
答案 1 :(得分:1)
不确定你想要什么但是:
public Type Value
{
get
{
return ValueType.GetType();
}
}
由于typeof(<anything>)
将返回Type
。
如果这不是您想要的,请查看使用Generics
。
答案 2 :(得分:0)
使用泛型可能是可能的。尝试:
public class ShortName<T>
{
public string ValueString { get; set; }
private Type ValueType { get; }
public T Value<T>
{
get { return /*Something cast to a T */ ; }
}
}
答案 3 :(得分:0)
public class ShortName<T>
{
public string ValueString
{
get
{
return Value.ToString(); // be aware of null ref here!
}
}
private Type ValueType
{
get
{
return typeof(T);
}
}
public T Value
{
get; set;
}
}