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.