Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 自定义数据类型:呈现类型的名称而不是属性的值_C# 4.0 - Fatal编程技术网

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

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> { #

我的一个项目中存在业务对象属性的自定义数据类型。此自定义类型是.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;
        }
}
公共类自定义类型
{
#区域隐式铸造
/// 
///
/// 
/// 
/// 
公共静态隐式运算符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。
}
}

我在这里做了一定程度的猜测,也许您可以显示自定义类型的代码以及提供该类型的所有代码。

这就是我所需要的。事后才有意义;我应该看到的。在返回时添加了空检查,效果很好。