Merge pull request #3373 from marek-safar/net-4.6.2
[mono.git] / mcs / class / referencesource / System.Web / WebSysDefaultValueAttribute.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="WebSysDefaultValueAttribute.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //------------------------------------------------------------------------------
6
7 namespace System.Web {
8
9     using System;
10     using System.ComponentModel;
11
12     [AttributeUsage(AttributeTargets.All)]
13     internal sealed class WebSysDefaultValueAttribute : DefaultValueAttribute {
14
15         private Type _type;
16         private bool _localized;
17
18         internal WebSysDefaultValueAttribute(Type type, string value) : base(value) {
19             _type = type;
20         }
21
22         internal WebSysDefaultValueAttribute(string value) : base(value) { }
23
24         public override object TypeId {
25             get {
26                 return typeof(DefaultValueAttribute);
27             }
28         }
29
30         public override object Value {
31             get {
32                 if (!_localized) {
33                     _localized = true;
34                     string baseValue = (string)base.Value;
35                     if (!String.IsNullOrEmpty(baseValue)) {
36                         object value = SR.GetString(baseValue);
37                         if (_type != null) {
38                             try {
39                                 value = TypeDescriptor.GetConverter(_type).ConvertFromInvariantString((string) value);
40                             }
41                             catch (NotSupportedException) {
42                                 value = null;
43                             }
44                         }
45                         base.SetValue(value);
46                     }
47                 }
48                 return base.Value;
49             }
50         }
51     }
52 }