INameCreationService インターフェイス
アセンブリ: System (system.dll 内)



INameCreationService を実装するコード例を次に示します。このサービスでは、指定したコンテナに含まれる名前のいずれとも一致しない種類の、一意な名前を作成できます。また、指定した名前文字列を検証することもできます。
Imports System Imports System.ComponentModel.Design Imports System.ComponentModel.Design.Serialization Imports System.Globalization Public Class NameCreationService Implements System.ComponentModel.Design.Serialization.INameCreationService Public Sub New() End Sub ' Creates an identifier for a particular data type that does not conflict ' with the identifiers of any components in the specified collection Public Function CreateName(ByVal container As System.ComponentModel.IContainer, ByVal dataType As System.Type) As String Implements INameCreationService.CreateName ' Create a basic type name string Dim baseName As String = dataType.Name Dim uniqueID As Integer = 1 Dim unique As Boolean = False ' Continue to increment uniqueID numeral until a unique ID is located. While Not unique unique = True ' Check each component in the container for a matching ' base type name and unique ID. Dim i As Integer For i = 0 To container.Components.Count - 1 ' Check component name for match with unique ID string. If container.Components(i).Site.Name.StartsWith((baseName + uniqueID.ToString())) Then ' If a match is encountered, set flag to recycle ' collection, increment ID numeral, and restart. unique = False uniqueID += 1 Exit For End If Next i End While Return baseName + uniqueID.ToString() End Function ' Returns whether the specified name contains ' all valid character types. Public Function IsValidName(ByVal name As String) As Boolean Implements INameCreationService.IsValidName Dim i As Integer For i = 0 To name.Length - 1 Dim ch As Char = name.Chars(i) Dim uc As UnicodeCategory = [Char].GetUnicodeCategory(ch) Select Case uc Case UnicodeCategory.UppercaseLetter, UnicodeCategory.LowercaseLetter, UnicodeCategory.TitlecaseLetter, UnicodeCategory.DecimalDigitNumber Case Else Return False End Select Next i Return True End Function ' Throws an exception if the specified name does not contain ' all valid character types. Public Sub ValidateName(ByVal name As String) Implements INameCreationService.ValidateName Dim i As Integer For i = 0 To name.Length - 1 Dim ch As Char = name.Chars(i) Dim uc As UnicodeCategory = [Char].GetUnicodeCategory(ch) Select Case uc Case UnicodeCategory.UppercaseLetter, UnicodeCategory.LowercaseLetter, UnicodeCategory.TitlecaseLetter, UnicodeCategory.DecimalDigitNumber Case Else Throw New Exception("The name '" + name + "' is not a valid identifier.") End Select Next i End Sub End Class
using System; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Globalization; namespace NameCreationServiceExample { public class NameCreationService : System.ComponentModel.Design.Serialization.INameCreationService { public NameCreationService() { } // Creates an identifier for a particular data type that does not conflict // with the identifiers of any components in the specified collection. public string CreateName(System.ComponentModel.IContainer container, System.Type dataType) { // Create a basic type name string. string baseName = dataType.Name; int uniqueID = 1; bool unique = false; // Continue to increment uniqueID numeral until a // unique ID is located. while( !unique ) { unique = true; // Check each component in the container for a matching // base type name and unique ID. for(int i=0; i<container.Components.Count; i++) { // Check component name for match with unique ID string. if( container.Components[i].Site.Name.StartsWith(baseName+uniqueID.ToString()) ) { // If a match is encountered, set flag to recycle // collection, increment ID numeral, and restart. unique = false; uniqueID++; break; } } } return baseName+uniqueID.ToString(); } // Returns whether the specified name contains // all valid character types. public bool IsValidName(string name) { for(int i = 0; i < name.Length; i++) { char ch = name[i]; UnicodeCategory uc = Char.GetUnicodeCategory(ch); switch (uc) { case UnicodeCategory.UppercaseLetter: case UnicodeCategory.LowercaseLetter: case UnicodeCategory.TitlecaseLetter: case UnicodeCategory.DecimalDigitNumber: break; default: return false; } } return true; } // Throws an exception if the specified name does not contain // all valid character types. public void ValidateName(string name) { for(int i = 0; i < name.Length; i++) { char ch = name[i]; UnicodeCategory uc = Char.GetUnicodeCategory(ch); switch (uc) { case UnicodeCategory.UppercaseLetter: case UnicodeCategory.LowercaseLetter: case UnicodeCategory.TitlecaseLetter: case UnicodeCategory.DecimalDigitNumber: break; default: throw new Exception("The name '"+name+"' is not a valid identifier."); } } } } }
#using <System.dll> using namespace System; using namespace System::ComponentModel::Design; using namespace System::ComponentModel::Design::Serialization; using namespace System::Globalization; namespace NameCreationServiceExample { public ref class NameCreationService: public System::ComponentModel::Design::Serialization::INameCreationService { public: NameCreationService(){} // Creates an identifier for a particular data type that does not conflict // with the identifiers of any components in the specified collection. virtual String^ CreateName( System::ComponentModel::IContainer^ container, System::Type^ dataType ) { // Create a basic type name string. String^ baseName = dataType->Name; int uniqueID = 1; bool unique = false; // Continue to increment uniqueID numeral until a // unique ID is located. while ( !unique ) { unique = true; // Check each component in the container for a matching // base type name and unique ID. for ( int i = 0; i < container->Components->Count; i++ ) { // Check component name for match with unique ID string. if ( container->Components[ i ]->Site->Name->StartsWith( String::Concat( baseName, uniqueID ) ) ) { // If a match is encountered, set flag to recycle // collection, increment ID numeral, and restart. unique = false; uniqueID++; break; } } } return String::Concat( baseName, uniqueID ); } // Returns whether the specified name contains // all valid character types. virtual bool IsValidName( String^ name ) { for ( int i = 0; i < name->Length; i++ ) { Char ch = name[ i ]; UnicodeCategory uc = Char::GetUnicodeCategory( ch ); switch ( uc ) { case UnicodeCategory::UppercaseLetter: case UnicodeCategory::LowercaseLetter: case UnicodeCategory::TitlecaseLetter: case UnicodeCategory::DecimalDigitNumber: break; default: return false; } } return true; } // Throws an exception if the specified name does not contain // all valid character types. virtual void ValidateName( String^ name ) { for ( int i = 0; i < name->Length; i++ ) { Char ch = name[ i ]; UnicodeCategory uc = Char::GetUnicodeCategory( ch ); switch ( uc ) { case UnicodeCategory::UppercaseLetter: case UnicodeCategory::LowercaseLetter: case UnicodeCategory::TitlecaseLetter: case UnicodeCategory::DecimalDigitNumber: break; default: throw gcnew Exception( String::Format( "The name '{0}' is not a valid identifier.", name ) ); } } } }; }
package NameCreationServiceExample; import System.*; import System.ComponentModel.Design.*; import System.ComponentModel.Design.Serialization.*; import System.Globalization.*; public class NameCreationService implements System.ComponentModel.Design.Serialization.INameCreationService { public NameCreationService() { } //NameCreationService // Creates an identifier for a particular data type that does not conflict // with the identifiers of any components in the specified collection. public String CreateName(System.ComponentModel.IContainer container, System.Type dataType) { // Create a basic type name string. String baseName = dataType.get_Name(); int uniqueID = 1; boolean unique = false; // Continue to increment uniqueID numeral until a // unique ID is located. while (!(unique)) { unique = true; // Check each component in the container for a matching // base type name and unique ID. for (int i = 0; i < container.get_Components().get_Count(); i++) { // Check component name for match with unique ID string. if (container.get_Components().get_Item(i).get_Site(). get_Name().StartsWith((baseName + ((Int32)uniqueID). ToString()))) { // If a match is encountered, set flag to recycle // collection, increment ID numeral, and restart. unique = false; uniqueID++; break; } } } return (baseName + ((Int32)uniqueID).ToString()); } //CreateName // Returns whether the specified name contains // all valid character types. public boolean IsValidName(String name) { for (int i = 0; i < name.length(); i++) { char ch = name.get_Chars(i); UnicodeCategory uc = Char.GetUnicodeCategory(ch); switch (uc) { case UnicodeCategory.UppercaseLetter: case UnicodeCategory.LowercaseLetter: case UnicodeCategory.TitlecaseLetter: case UnicodeCategory.DecimalDigitNumber: break; default: return false; } } return true; } //IsValidName // Throws an exception if the specified name does not contain // all valid character types. public void ValidateName(String name)throws java.lang.Exception { for (int i = 0; i < name.length(); i++) { char ch = name.get_Chars(i); UnicodeCategory uc = Char.GetUnicodeCategory(ch); switch (uc) { case UnicodeCategory.UppercaseLetter: case UnicodeCategory.LowercaseLetter: case UnicodeCategory.TitlecaseLetter: case UnicodeCategory.DecimalDigitNumber: break; default: throw new Exception("The name '" + name + "' is not a valid identifier."); } } } //ValidateName } //NameCreationService

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


INameCreationService メソッド

名前 | 説明 | |
---|---|---|
![]() | CreateName | 指定したコンテナ内でどのコンポーネントとも重複しない新しい名前を作成します。 |
![]() | IsValidName | 指定した名前が有効かどうかを示す値を取得します。 |
![]() | ValidateName | 指定した名前が有効かどうかを示す値を取得します。 |

INameCreationService メンバ
- INameCreationServiceのページへのリンク