我有以下情况:
public class ListingAttribute : AgencyServicesApi.Attribute
{
public Type ClrType { get; set; }
//public void SetValue(object value)
//{
// this.SetValueGen<ClrType>((ClrType)value);
//}
public void SetValueGen<TValue>(TValue value)
{
var t = typeof(TValue);
Value = // Use conversion methods based on ClrType here.
}
}
我无法使ListingAttribute
泛型并为T
使用通用参数ClrType
,因为我必须在运行时设置类型。无论AgencyServicesApi.Attribute
的内容是否应为任何其他类型,Value
都有string
类型的Value
属性。我正在尝试扩展AgencyServicesApi.Attribute
,并根据配置文件正确设置ClrType
,并能够添加正确的验证和ToString
实施。
如何调用泛型方法SetValueGen
并将ClrType
类型作为类型参数传递给它? SetValue
被注释掉了,因为它没有编译,我不指望它,但我坚持这个问题。
答案 0 :(得分:0)
几乎按原样使用您的代码:
public class ListingAttribute : AgencyServicesApi.Attribute
{
public Type ClrType { get; set; }
public void SetValue(object value)
{
SetValueGen((dynamic)value);
}
public void SetValueGen<TValue>(TValue value)
{
var t = typeof(TValue);
Value = // Use conversion methods based on ClrType here.
}
}
但这似乎不对......你为什么不这样做:
public void SetValue(object value)
{
var t = value.GetType();
Value = // Use conversion methods based on t here.
}