我的一个项目中有业务对象属性的自定义数据类型。此自定义类型是.NET中基本数据类型的包装。
当我尝试从属性中获取值时,如果语法为:
,则会显示以下内容company.Name
Interfaces.Model.CustomType`1[System.String]
期待:
company.Name.Value
我想避免使用.value;我想重载一个操作,还是隐式/显式方法?
任何帮助都会很棒。
以下是CustomType的概要:
public class CustomType<t>
{
#region Implicit Casting
/// <summary>
///
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static implicit operator t(CustomType<t> obj)
{
if (obj == null)
return new CustomType<t>().Value;
return obj.Value;
}
/// <summary>
///
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static implicit operator CustomType<t>(t obj)
{
return new CustomType<t>(obj);
}
#endregion Implicit Casting
/// <summary>
/// Gets or sets the value.
/// </summary>
/// <value>The value.</value>
public t Value
{
get
{
return _value;
}
set
{
_value = value;
}
}
/// <summary>
/// Sets the value.
/// </summary>
/// <param name="value">The value.</param>
/// <returns></returns>
public CustomType<t> setValue(t value)
{
try
{
Value = value;
}
catch (InvalidCastException e)
{
throw new InvalidCastException("CustomType invalid property cast ", e.InnerException);
}
return this;
}
}
答案 0 :(得分:1)
如果我理解正确,您需要覆盖ToString
。
public class CustomType<T>
{
public override string ToString()
{
return Value.ToString(); //I assume Value is of type T.
}
}
我在这里做了一些猜测,或许你可以显示你的自定义类型的代码以及所有给你类型的代码。