C# 4.0 自定义数据类型:呈现类型的名称而不是属性的值
我的一个项目中存在业务对象属性的自定义数据类型。此自定义类型是.NET中基本数据类型的包装器 当我尝试从属性获取值时,如果语法为:C# 4.0 自定义数据类型:呈现类型的名称而不是属性的值,c#-4.0,C# 4.0,我的一个项目中存在业务对象属性的自定义数据类型。此自定义类型是.NET中基本数据类型的包装器 当我尝试从属性获取值时,如果语法为: company.Name Interfaces.Model.CustomType`1[System.String] 它期望: company.Name.Value 我希望避免使用.value;我是想重载操作还是隐式/显式方法 任何帮助都会很好 以下是CustomType的概述: public class CustomType<t> { #
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;
}
}
公共类自定义类型
{
#区域隐式铸造
///
///
///
///
///
公共静态隐式运算符t(CustomType obj)
{
if(obj==null)
返回新的CustomType().值;
返回对象值;
}
///
///
///
///
///
公共静态隐式运算符CustomType(t obj)
{
返回新的自定义类型(obj);
}
#端部隐式铸造
///
///获取或设置该值。
///
///价值。
公共价值
{
得到
{
返回_值;
}
设置
{
_价值=价值;
}
}
///
///设置值。
///
///价值。
///
公共CustomType设置值(t值)
{
尝试
{
价值=价值;
}
捕获(无效卡斯特例外e)
{
抛出新的InvalidCastException(“CustomType无效属性转换”,例如InnerException);
}
归还这个;
}
}
如果我理解正确,您需要覆盖ToString
public class CustomType<T>
{
public override string ToString()
{
return Value.ToString(); //I assume Value is of type T.
}
}
公共类自定义类型
{
公共重写字符串ToString()
{
返回值.ToString();//我假设值的类型为T。
}
}
我在这里做了一定程度的猜测,也许您可以显示自定义类型的代码以及提供该类型的所有代码。这就是我所需要的。事后才有意义;我应该看到的。在返回时添加了空检查,效果很好。