自定义数据类型:呈现类型的名称而不是属性的值

时间:2011-11-15 13:42:21

标签: c#-4.0

我的一个项目中有业务对象属性的自定义数据类型。此自定义类型是.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;
        }
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要覆盖ToString

public class CustomType<T>
{
    public override string ToString()
    {
        return Value.ToString(); //I assume Value is of type T.
    }
}

我在这里做了一些猜测,或许你可以显示你的自定义类型的代码以及所有给你类型的代码。