Genişletilmiş Tip Sistem tipi dönüştürücüler


ETS, LanguagePrimitives.ConvertTo(System.Object, System.Type) yöntemine çağrı yapıldığında iki temel tip dönüştürücüyü kullanır. Bu yöntem çağrıldığında PowerShell, standart PowerShell dil dönüştürücülerini veya özel bir dönüştürücüyü kullanarak tür dönüştürmeyi gerçekleştirmeye çalışır. PowerShell dönüştürmeyi gerçekleştiremezse bir PSInvalidCastException istisnası oluşturur.

Standart Windows PowerShell Dil Dönüştürücüleri

Bu standart dönüştürmeler, herhangi bir özel dönüştürmeden önce kontrol edilir ve geçersiz kılınamaz. Aşağıdaki tabloda, ConvertTo(System.Object, System.Type) yöntemi çağrıldığında PowerShell tarafından gerçekleştirilen tür dönüştürmeleri listelenmektedir. valueToConvert ve resultType parametrelerine yapılan başvuruların, ConvertTo(System.Object,System.Type) yönteminin parametrelerine atıfta bulunduğunu unutmayın.

From (valueToConvert) To (resultType) Returns
Null String ""
Null Char '\0'
Null Numeric 0 of the type specified in the resultType parameter.
Null Boolean Results of call to the IsTrue(System.Object)(Null) method.
Null PSObject New object of type PSObject.
Null Non-value-type Null.
Null Nullable<T> Null.
Derived Class Base class valueToConvert
Anything Void AutomationNull.Value
Anything String Calls ToString mechanism.
Anything Boolean IsTrue(System.Object) (valueToConvert)
Anything PSObject Results of call to the AsPSObject(System.Object) (valueToConvert) method.
Anything Xml Document Converts valueToConvert to string, then calls XMLDocument constructor.
Array Array Attempts to convert each element of the array.
Singleton Array Array[0] equals valueToConvert that is converted to the element type of the array.
IDictionary Hash table Results of call to Hashtable(valueToConvert).
String Char[] valueToConvert.ToCharArray
String RegEx Results of call to Regx(valueToConvert).
String Type Returns the appropriate type using the valueToConvert parameter to search RunspaceConfiguration.Assemblies.
String Numeric If valueToConvert is "", returns 0 of the resultType. Otherwise the culture "culture invariant" is used to produce a numeric value.
Integer System.Enum Converts the integer to the constant if the integer is defined by the enumeration. If the integer is not defined an PSInvalidCastException exception is thrown.

Özel dönüşümler

PowerShell, standart bir PowerShell dil dönüştürücüsü kullanarak türü dönüştüremezse özel dönüştürücüleri kontrol eder. PowerShell, bu bölümde açıklanan sırayla çeşitli özel dönüştürücü türlerini arar. valueToConvert ve resultType parametrelerine yapılan başvuruların, ConvertTo(System.Object, System.Type) yönteminin parametrelerine atıfta bulunduğunu unutmayın. Özel bir dönüştürücü bir istisna atarsa, nesneyi dönüştürmek için başka bir girişimde bulunulmaz ve bu istisna, daha sonra oluşturulan bir PSInvalidCastException istisnasına sarılır.

PowerShell türü dönüştürücü

PowerShell türü dönüştürücüler, System.Enum sınıfından türetilen tüm türler gibi tek bir türü veya tür ailesini dönüştürmek için kullanılır. PowerShell tipi dönüştürücü oluşturmak için bir PSTypeConverter sınıfını uygulamanız ve bu uygulamayı hedef sınıfla ilişkilendirmeniz gerekir. PowerShell türü dönüştürücüyü hedef sınıfıyla ilişkilendirmenin iki yolu vardır.

  • Tip yapılandırma dosyası aracılığıyla
  • TypeConverterAttribute özelliğini hedef sınıfa uygulayarak

PSTypeConverter soyut sınıfından türetilen PowerShell türü dönüştürücüler, bir nesneyi belirli bir türe veya belirli bir türden dönüştürmek için yöntemler sağlar. valueToConvert parametresi kendisiyle ilişkilendirilmiş bir PowerShell Type dönüştürücüsü olan bir nesne içeriyorsa, PowerShell PSTypeConverter.ConvertTo(System.Object, System.Type,System.IFormatProvider, System.Boolean) öğesini çağırır. Nesneyi resultType parametresi tarafından belirtilen türe dönüştürmek için ilişkili dönüştürücünün yöntemini kullanın. resultType parametresi kendisiyle ilişkilendirilmiş bir PowerShell türü dönüştürücüsü olan bir türe başvuruyorsa, PowerShell PSTypeConverter.ConvertFrom(System.Object,System.Type, System.IFormatProvider, System.Boolean) öğesini çağırır. Nesneyi resultType parametresi tarafından belirtilen türden dönüştürmek için ilişkili dönüştürücünün yöntemini kullanın.

Sistem tipi dönüştürücü

Sistem tipi dönüştürücüler belirli bir hedef sınıfı dönüştürmek için kullanılır. Bu tür dönüştürücüler bir sınıf ailesini dönüştürmek için kullanılamaz. Bir sistem tipi dönüştürücü oluşturmak için bir TypeConverter sınıfını uygulamanız ve bu uygulamayı hedef sınıfla ilişkilendirmeniz gerekir. Sistem tipi dönüştürücüyü hedef sınıfıyla ilişkilendirmenin iki yolu vardır.

  • Tip yapılandırma dosyası aracılığıyla
  • TypeConverterAttribute niteliğini hedef sınıfa uygulayarak

Ayrıştırma dönüştürücü

valueToConvert parametresi bir dizeyse ve resultType parametresinin nesne türünde bir Parse yöntemi varsa Parse Dizeyi dönüştürmek için yöntemi çağrılır.

Oluşturucu dönüştürücü

resultType parametresinin nesne türü, valueToConvert parametresinin nesnesiyle aynı türde tek bir parametreye sahip bir yapıcıya sahipse bu yapıcı çağrılır.

Örtük cast operatörü dönüştürücüsü

valueToConvert parametresi, resultType'a dönüşen örtülü bir dönüştürme operatörüne sahipse, bunun dönüştürme operatörü çağrılır. resultType parametresi, valueToConvert'ten dönüştüren örtülü bir dönüştürme operatörüne sahipse, bunun dönüştürme operatörü çağrılır.

Açık yayın operatörü dönüştürücüsü

valueToConvert parametresi, resultType'a dönüşen açık bir dönüştürme operatörüne sahipse, bunun dönüştürme operatörü çağrılır. resultType parametresi, valueToConvert'ten dönüştürme yapan açık bir dönüştürme operatörüne sahipse bu durumda dönüştürme operatörü çağrılır.