チェンジセット 1665 (default)
- 日時:
- 2024/08/28 14:46:28 (6週前)
- 場所:
- framework/trunk
- ファイル:
-
- 4個の追加
- 5個の更新
凡例:
- 未変更
- 追加
- 削除
-
framework/trunk/CoreLibrary/Sources/Reflection/ReflectionUtility.cs
r1516 r1665 21 21 // ---------------------------------------------------------------------------- 22 22 23 // ReSharper disable ExceptionNotDocumented 23 24 namespace FCSoft.SilverFrost.Framework.Reflection 24 25 { -
framework/trunk/WebApplication/WebApplication.csproj
r1664 r1665 74 74 <Content Include="UI\WebControls\CompareValidatorPage.aspx" /> 75 75 <Content Include="UI\WebControls\ControlPropertyLinkageConnectorPage.aspx" /> 76 <Content Include="UI\WebControls\DefaultButtonSetterUnderNestedNamingContainerPage.aspx" /> 76 77 <Content Include="UI\WebControls\FileUploadPage.aspx" /> 77 78 <Content Include="UI\WebControls\FormViewBindUserControl1.ascx" /> … … 322 323 <Compile Include="UI\WebControls\DateBoxPage.aspx.designer.cs"> 323 324 <DependentUpon>DateBoxPage.aspx</DependentUpon> 325 </Compile> 326 <Compile Include="UI\WebControls\DefaultButtonSetterUnderNestedNamingContainerPage.aspx.cs"> 327 <DependentUpon>DefaultButtonSetterUnderNestedNamingContainerPage.aspx</DependentUpon> 328 <SubType>ASPXCodeBehind</SubType> 329 </Compile> 330 <Compile Include="UI\WebControls\DefaultButtonSetterUnderNestedNamingContainerPage.aspx.designer.cs"> 331 <DependentUpon>DefaultButtonSetterUnderNestedNamingContainerPage.aspx</DependentUpon> 324 332 </Compile> 325 333 <Compile Include="UI\WebControls\DialogPageNestedPage.aspx.cs"> -
framework/trunk/WebLibrary/Sources/Reflections.cs
r1640 r1665 609 609 { 610 610 /// <summary> 611 /// <c>isWebControlDisabled</c> の値です。 612 /// </summary> 613 private static readonly int IsWebControlDisabledConstantValue = InitializeIsWebControlDisabledConstantValue(); 614 615 /// <summary> 611 616 /// <c>flags</c> フィールド情報です。 612 617 /// </summary> … … 614 619 615 620 /// <summary> 616 /// <c> isWebControlDisabled</c> の値です。617 /// </summary> 618 private static readonly int IsWebControlDisabledConstantValue = InitializeIsWebControlDisabledConstantValue();621 /// <c>FindControlFromPageIfNecessary</c> メソッドを呼び出すデリゲートです。 622 /// </summary> 623 private static readonly Func<System.Web.UI.Control, string, System.Web.UI.Control> FindControlFromPageIfNecessaryDelegate = InitializeFindControlFromPageIfNecessaryDelegate(); 619 624 620 625 … … 630 635 get 631 636 { 632 return FlagsFieldInfo != null 633 && IsWebControlDisabledConstantValue != 0; 637 return IsWebControlDisabledConstantValue != 0 638 && FlagsFieldInfo != null 639 && FindControlFromPageIfNecessaryDelegate != null; 634 640 } 635 641 } … … 703 709 } 704 710 705 706 /// <summary> 707 /// <see cref="FlagsFieldInfo"/> を初期化します。 708 /// </summary> 709 /// <returns> 710 /// <c>flags</c> フィールド情報。 711 /// </returns> 712 private static FieldInfo InitializeFlagsFieldInfo() 713 { 714 return typeof(System.Web.UI.Control).GetField( 715 "flags", 716 BindingFlags.Instance | BindingFlags.NonPublic); 717 } 711 /// <summary> 712 /// <c>FindControlFromPageIfNecessary</c> メソッドを呼び出します。 713 /// </summary> 714 /// <param name="control">コントロール。</param> 715 /// <param name="id">コントロールのID。</param> 716 /// <returns> 717 /// 見付かったコントロール。 718 /// </returns> 719 internal static System.Web.UI.Control FindControlFromPageIfNecessary(System.Web.UI.Control control, string id) 720 { 721 if (FindControlFromPageIfNecessaryDelegate == null) 722 { 723 return null; 724 } 725 726 return FindControlFromPageIfNecessaryDelegate(control, id); 727 } 728 718 729 719 730 /// <summary> … … 736 747 return (int)fieldInfo.GetValue(null); 737 748 } 749 750 /// <summary> 751 /// <see cref="FlagsFieldInfo"/> を初期化します。 752 /// </summary> 753 /// <returns> 754 /// <c>flags</c> フィールド情報。 755 /// </returns> 756 private static FieldInfo InitializeFlagsFieldInfo() 757 { 758 return typeof(System.Web.UI.Control).GetField( 759 "flags", 760 BindingFlags.Instance | BindingFlags.NonPublic); 761 } 762 763 /// <summary> 764 /// <see cref="FindControlFromPageIfNecessaryDelegate"/> を初期化します。 765 /// </summary> 766 /// <returns> 767 /// <c>FindControlFromPageIfNecessary</c> メソッドを呼び出すデリゲート。 768 /// </returns> 769 private static Func<System.Web.UI.Control, string, System.Web.UI.Control> InitializeFindControlFromPageIfNecessaryDelegate() 770 { 771 MethodInfo findControlFromPageIfNecessaryMethodInfo 772 = typeof(System.Web.UI.Control).GetMethod( 773 "FindControlFromPageIfNecessary", 774 BindingFlags.Instance | BindingFlags.NonPublic, 775 null, 776 new[] { typeof(string) }, 777 null); 778 if (findControlFromPageIfNecessaryMethodInfo == null) 779 { 780 return null; 781 } 782 783 return delegate(System.Web.UI.Control control, string id) 784 { 785 return (System.Web.UI.Control)findControlFromPageIfNecessaryMethodInfo.Invoke(control, new object[] { id }); 786 }; 787 } 788 } 789 790 791 /// <summary> 792 /// <see cref="System.Web.UI.Page"/> に関係するリフレクションの集合です。 793 /// </summary> 794 internal static class Page 795 { 796 /// <summary> 797 /// <c>ClientSupportsJavaScript</c> プロパティ情報です。 798 /// </summary> 799 private static readonly PropertyInfo ClientSupportsJavaScriptPropertyInfo = InitializeClientSupportsJavaScriptPropertyInfo(); 800 801 /// <summary> 802 /// <c>ClientSupportsFocus</c> プロパティ情報です。 803 /// </summary> 804 private static readonly PropertyInfo ClientSupportsFocusPropertyInfo = InitializeClientSupportsFocusPropertyInfo(); 805 806 /// <summary> 807 /// <c>FocusedControlID</c> プロパティ情報です。 808 /// </summary> 809 private static readonly PropertyInfo FocusedControlIDPropertyInfo = InitializeFocusedControlIDPropertyInfo(); 810 811 /// <summary> 812 /// <c>FocusedControl</c> プロパティ情報です。 813 /// </summary> 814 private static readonly PropertyInfo FocusedControlPropertyInfo = InitializeFocusedControlPropertyInfo(); 815 816 /// <summary> 817 /// <c>ValidatorInvalidControl</c> プロパティ情報です。 818 /// </summary> 819 private static readonly PropertyInfo ValidatorInvalidControlPropertyInfo = InitializeValidatorInvalidControlPropertyInfo(); 820 821 /// <summary> 822 /// <c>LastFocusedControl</c> プロパティ情報です。 823 /// </summary> 824 private static readonly PropertyInfo LastFocusedControlPropertyInfo = InitializeLastFocusedControlPropertyInfo(); 825 826 /// <summary> 827 /// <c>ScriptManager</c> プロパティ情報です。 828 /// </summary> 829 private static readonly PropertyInfo ScriptManagerPropertyInfo = InitializeScriptManagerPropertyInfo(); 830 831 /// <summary> 832 /// <c>RegisterWebFormsScript</c> メソッドを呼び出すデリゲートです。 833 /// </summary> 834 private static readonly Action<System.Web.UI.Page> RegisterWebFormsScriptDelegate = InitializeRegisterWebFormsScriptDelegate(); 835 836 837 /// <summary> 838 /// 使用出来るかどうかを返します。 839 /// </summary> 840 /// <value> 841 /// 使用出来る場合は <see langword="true"/>。 842 /// それ以外の場合は <see langword="false"/>。 843 /// </value> 844 internal static bool IsValid 845 { 846 get 847 { 848 return ClientSupportsJavaScriptPropertyInfo != null 849 && ClientSupportsFocusPropertyInfo != null 850 && FocusedControlIDPropertyInfo != null 851 && FocusedControlPropertyInfo != null 852 && ValidatorInvalidControlPropertyInfo != null 853 && LastFocusedControlPropertyInfo != null 854 && ScriptManagerPropertyInfo != null 855 && RegisterWebFormsScriptDelegate != null; 856 } 857 } 858 859 860 /// <summary> 861 /// <c>ClientSupportsJavaScript</c> プロパティの値を取得します。 862 /// </summary> 863 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 864 /// <returns> 865 /// <c>ClientSupportsJavaScript</c> プロパティの値。 866 /// </returns> 867 internal static bool GetClientSupportsJavaScript(System.Web.UI.Page page) 868 { 869 if (ClientSupportsJavaScriptPropertyInfo == null) 870 { 871 return false; 872 } 873 874 return (bool)ClientSupportsJavaScriptPropertyInfo.GetValue(page); 875 } 876 877 /// <summary> 878 /// <c>ClientSupportsFocus</c> プロパティの値を取得します。 879 /// </summary> 880 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 881 /// <returns> 882 /// <c>ClientSupportsFocus</c> プロパティの値。 883 /// </returns> 884 internal static bool GetClientSupportsFocus(System.Web.UI.Page page) 885 { 886 if (ClientSupportsFocusPropertyInfo == null) 887 { 888 return false; 889 } 890 891 return (bool)ClientSupportsFocusPropertyInfo.GetValue(page); 892 } 893 894 /// <summary> 895 /// <c>FocusedControlID</c> プロパティの値を取得します。 896 /// </summary> 897 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 898 /// <returns> 899 /// <c>FocusedControlID</c> プロパティの値。 900 /// </returns> 901 internal static string GetFocusedControlID(System.Web.UI.Page page) 902 { 903 if (FocusedControlIDPropertyInfo == null) 904 { 905 return null; 906 } 907 908 return (string)FocusedControlIDPropertyInfo.GetValue(page); 909 } 910 911 /// <summary> 912 /// <c>FocusedControl</c> プロパティの値を取得します。 913 /// </summary> 914 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 915 /// <returns> 916 /// <c>FocusedControl</c> プロパティの値。 917 /// </returns> 918 internal static System.Web.UI.Control GetFocusedControl(System.Web.UI.Page page) 919 { 920 if (FocusedControlPropertyInfo == null) 921 { 922 return null; 923 } 924 925 return (System.Web.UI.Control)FocusedControlPropertyInfo.GetValue(page); 926 } 927 928 /// <summary> 929 /// <c>ValidatorInvalidControl</c> プロパティの値を取得します。 930 /// </summary> 931 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 932 /// <returns> 933 /// <c>ValidatorInvalidControl</c> プロパティの値。 934 /// </returns> 935 internal static string GetValidatorInvalidControl(System.Web.UI.Page page) 936 { 937 if (ValidatorInvalidControlPropertyInfo == null) 938 { 939 return null; 940 } 941 942 return (string)ValidatorInvalidControlPropertyInfo.GetValue(page); 943 } 944 945 /// <summary> 946 /// <c>LastFocusedControl</c> プロパティの値を取得します。 947 /// </summary> 948 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 949 /// <returns> 950 /// <c>LastFocusedControl</c> プロパティの値。 951 /// </returns> 952 internal static string GetLastFocusedControl(System.Web.UI.Page page) 953 { 954 if (LastFocusedControlPropertyInfo == null) 955 { 956 return null; 957 } 958 959 return (string)LastFocusedControlPropertyInfo.GetValue(page); 960 } 961 962 /// <summary> 963 /// <c>ScriptManager</c> プロパティの値を取得します。 964 /// </summary> 965 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 966 /// <returns> 967 /// <c>ScriptManager</c> プロパティの値。 968 /// </returns> 969 internal static object GetScriptManager(System.Web.UI.Page page) 970 { 971 if (ScriptManagerPropertyInfo == null) 972 { 973 return null; 974 } 975 976 return ScriptManagerPropertyInfo.GetValue(page); 977 } 978 979 /// <summary> 980 /// <c>RegisterWebFormsScript</c> メソッドを呼び出します。 981 /// </summary> 982 /// <param name="page"><see cref="System.Web.UI.Page"/>。</param> 983 internal static void RegisterWebFormsScript(System.Web.UI.Page page) 984 { 985 if (RegisterWebFormsScriptDelegate == null) 986 { 987 return; 988 } 989 990 RegisterWebFormsScriptDelegate(page); 991 } 992 993 994 /// <summary> 995 /// <see cref="ClientSupportsJavaScriptPropertyInfo"/> を初期化します。 996 /// </summary> 997 /// <returns> 998 /// <c>ClientSupportsJavaScript</c> プロパティ情報。 999 /// </returns> 1000 private static PropertyInfo InitializeClientSupportsJavaScriptPropertyInfo() 1001 { 1002 return typeof(System.Web.UI.Page).GetProperty( 1003 "ClientSupportsJavaScript", 1004 BindingFlags.Instance | BindingFlags.NonPublic); 1005 } 1006 1007 /// <summary> 1008 /// <see cref="ClientSupportsFocusPropertyInfo"/> を初期化します。 1009 /// </summary> 1010 /// <returns> 1011 /// <c>ClientSupportsFocus</c> プロパティ情報。 1012 /// </returns> 1013 private static PropertyInfo InitializeClientSupportsFocusPropertyInfo() 1014 { 1015 return typeof(System.Web.UI.Page).GetProperty( 1016 "ClientSupportsFocus", 1017 BindingFlags.Instance | BindingFlags.NonPublic); 1018 } 1019 1020 /// <summary> 1021 /// <see cref="FocusedControlIDPropertyInfo"/> を初期化します。 1022 /// </summary> 1023 /// <returns> 1024 /// <c>FocusedControlID</c> プロパティ情報。 1025 /// </returns> 1026 private static PropertyInfo InitializeFocusedControlIDPropertyInfo() 1027 { 1028 return typeof(System.Web.UI.Page).GetProperty( 1029 "FocusedControlID", 1030 BindingFlags.Instance | BindingFlags.NonPublic); 1031 } 1032 1033 /// <summary> 1034 /// <see cref="FocusedControlPropertyInfo"/> を初期化します。 1035 /// </summary> 1036 /// <returns> 1037 /// <c>FocusedControl</c> プロパティ情報。 1038 /// </returns> 1039 private static PropertyInfo InitializeFocusedControlPropertyInfo() 1040 { 1041 return typeof(System.Web.UI.Page).GetProperty( 1042 "FocusedControl", 1043 BindingFlags.Instance | BindingFlags.NonPublic); 1044 } 1045 1046 /// <summary> 1047 /// <see cref="ValidatorInvalidControlPropertyInfo"/> を初期化します。 1048 /// </summary> 1049 /// <returns> 1050 /// <c>ValidatorInvalidControl</c> プロパティ情報。 1051 /// </returns> 1052 private static PropertyInfo InitializeValidatorInvalidControlPropertyInfo() 1053 { 1054 return typeof(System.Web.UI.Page).GetProperty( 1055 "ValidatorInvalidControl", 1056 BindingFlags.Instance | BindingFlags.NonPublic); 1057 } 1058 1059 /// <summary> 1060 /// <see cref="LastFocusedControlPropertyInfo"/> を初期化します。 1061 /// </summary> 1062 /// <returns> 1063 /// <c>LastFocusedControl</c> プロパティ情報。 1064 /// </returns> 1065 private static PropertyInfo InitializeLastFocusedControlPropertyInfo() 1066 { 1067 return typeof(System.Web.UI.Page).GetProperty( 1068 "LastFocusedControl", 1069 BindingFlags.Instance | BindingFlags.NonPublic); 1070 } 1071 1072 /// <summary> 1073 /// <see cref="ScriptManagerPropertyInfo"/> を初期化します。 1074 /// </summary> 1075 /// <returns> 1076 /// <c>ScriptManager</c> プロパティ情報。 1077 /// </returns> 1078 private static PropertyInfo InitializeScriptManagerPropertyInfo() 1079 { 1080 return typeof(System.Web.UI.Page).GetProperty( 1081 "ScriptManager", 1082 BindingFlags.Instance | BindingFlags.NonPublic); 1083 } 1084 1085 /// <summary> 1086 /// <see cref="RegisterWebFormsScriptDelegate"/> を初期化します。 1087 /// </summary> 1088 /// <returns> 1089 /// <c>RegisterWebFormsScript</c> メソッドを呼び出すデリゲート。 1090 /// </returns> 1091 private static Action<System.Web.UI.Page> InitializeRegisterWebFormsScriptDelegate() 1092 { 1093 MethodInfo registerWebFormsScriptMethodInfo 1094 = typeof(System.Web.UI.Page).GetMethod( 1095 "RegisterWebFormsScript", 1096 BindingFlags.Instance | BindingFlags.NonPublic, 1097 null, 1098 Type.EmptyTypes, 1099 null); 1100 if (registerWebFormsScriptMethodInfo == null) 1101 { 1102 return null; 1103 } 1104 1105 return delegate(System.Web.UI.Page page) 1106 { 1107 registerWebFormsScriptMethodInfo.Invoke(page, null); 1108 }; 1109 } 738 1110 } 739 1111 … … 1058 1430 1059 1431 return GetPageRequestManagerDelegate(scriptManager); 1432 } 1433 } 1434 1435 1436 /// <summary> 1437 /// <c>System.Web.UI.IScriptManager</c> に関係するリフレクションの集合です。 1438 /// </summary> 1439 internal static class InternalScriptManager 1440 { 1441 /// <summary> 1442 /// <c>IScriptManager.SetFocusInternal</c> メソッドを呼び出すデリゲートです。 1443 /// </summary> 1444 private static readonly Action<object, string> SetFocusInternalDelegate; 1445 1446 1447 /// <summary> 1448 /// クラスを初期化します。 1449 /// </summary> 1450 static InternalScriptManager() 1451 { 1452 Type type = typeof(System.Web.UI.Control).Assembly.GetType("System.Web.UI.IScriptManager", false); 1453 if (type == null) 1454 { 1455 return; 1456 } 1457 1458 MethodInfo setFocusInternalMethodInfo 1459 = type.GetMethod( 1460 "SetFocusInternal", 1461 BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, 1462 null, 1463 new[] { typeof(string) }, 1464 null); 1465 if (setFocusInternalMethodInfo != null) 1466 { 1467 SetFocusInternalDelegate = delegate(object obj, string clientID) 1468 { 1469 setFocusInternalMethodInfo.Invoke(obj, new[] { (object)clientID }); 1470 }; 1471 } 1472 } 1473 1474 1475 /// <summary> 1476 /// 使用出来るかどうかを返します。 1477 /// </summary> 1478 /// <value> 1479 /// 使用出来る場合は <see langword="true"/>。 1480 /// それ以外の場合は <see langword="false"/>。 1481 /// </value> 1482 internal static bool IsValid 1483 { 1484 get 1485 { 1486 return SetFocusInternalDelegate != null; 1487 } 1488 } 1489 1490 1491 /// <summary> 1492 /// <c>IScriptManager.SetFocusInternal</c> メソッドを呼び出します。 1493 /// </summary> 1494 /// <param name="scriptManager"><c>System.Web.UI.IScriptManager</c>。</param> 1495 /// <param name="clientID">クライアント ID。</param> 1496 internal static void SetFocusInternal(object scriptManager, string clientID) 1497 { 1498 if (SetFocusInternalDelegate == null) 1499 { 1500 return; 1501 } 1502 1503 SetFocusInternalDelegate(scriptManager, clientID); 1060 1504 } 1061 1505 } -
framework/trunk/WebLibrary/WebLibrary.csproj
r1633 r1665 156 156 <Compile Include="Sources\UI\WebControls\DialogValidationSummary.cs" /> 157 157 <Compile Include="Sources\UI\WebControls\DialogMessageSummary.cs" /> 158 <Compile Include="Sources\UI\WebControls\Form.cs" /> 158 159 <Compile Include="Sources\UI\WebControls\FormView.cs" /> 159 160 <Compile Include="Sources\UI\WebControls\HiddenField.cs" /> -
framework/trunk/WebTest/Sources/ReflectionsTest.cs
r1640 r1665 42 42 } 43 43 44 #region SameSiteMode 44 45 45 46 /// <summary> … … 72 73 } 73 74 75 #endregion 76 77 #region HttpCookie 74 78 75 79 /// <summary> … … 83 87 } 84 88 89 #endregion 90 91 #region HttpRawUploadedContent 85 92 86 93 /// <summary> … … 102 109 } 103 110 111 #endregion 112 113 #region HttpInputStream 104 114 105 115 /// <summary> … … 202 212 } 203 213 214 #endregion 215 216 #region HttpPostedFile 204 217 205 218 /// <summary> … … 259 272 } 260 273 274 #endregion 275 276 #region FormsAuthentication 261 277 262 278 /// <summary> … … 270 286 Trace.WriteLine("FormsAuthentication.CookieSameSite = " + value); 271 287 } 288 289 #endregion 290 291 #region Control 272 292 273 293 /// <summary> … … 307 327 } 308 328 329 #endregion 330 331 #region Page 332 333 /// <summary> 334 /// <see cref="Reflections.Page"/> が使用出来るかのテストです。 335 /// </summary> 336 [Test] 337 public void TestPageIsValid() 338 { 339 Assert.That(Reflections.Page.IsValid, Is.True); 340 } 341 342 #endregion 343 344 #region WebControl 309 345 310 346 /// <summary> … … 341 377 } 342 378 379 #endregion 380 381 #region SimpleBitVector32 343 382 344 383 /// <summary> … … 367 406 } 368 407 408 #endregion 409 410 #region ScriptManager 369 411 370 412 /// <summary> … … 377 419 } 378 420 421 #endregion 422 423 #region InternalScriptManager 424 425 /// <summary> 426 /// <see cref="Reflections.InternalScriptManager"/> が使用出来るかのテストです。 427 /// </summary> 428 [Test] 429 public void TestInternalScriptManagerIsValid() 430 { 431 Assert.That(Reflections.InternalScriptManager.IsValid, Is.True); 432 } 433 434 #endregion 435 436 #region PageRequestManager 379 437 380 438 /// <summary> … … 387 445 } 388 446 447 #endregion 448 449 #region Style 389 450 390 451 /// <summary> … … 419 480 } 420 481 482 #endregion 483 484 #region ListControl 421 485 422 486 /// <summary> … … 447 511 } 448 512 513 #endregion 514 515 #region RadioButtonList 449 516 450 517 /// <summary> … … 465 532 Assert.That(Reflections.RadioButtonList.GetControlToRepeat(new System.Web.UI.WebControls.RadioButtonList()), Is.Not.Null); 466 533 } 534 535 #endregion 467 536 } 468 537 }
※ 詳しい使い方は
TracChangeset を参照してください。