2011-11-15 7 views
0

私のプロジェクトの1つにビジネスオブジェクトプロパティ用のカスタムデータ型があります。このカスタムタイプは、.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

私が正しく理解していれば、あなたがToStringをオーバーライドする必要があります。

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

私はここで推測の一定量をやった、おそらくあなたは、あなたのカスタムタイプのコードを示すことができ、すべてのそれはあなたのタイプを与えています。

+0

これは私が必要だったすべてです。事実の後に意味をなさない。それを見たはずです。返品にヌルチェックを追加し、素晴らしい作品です。 – Arnej65

関連する問題