ConfigurationConverterBase Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Základní třída pro typy převaděčů konfigurace.
public ref class ConfigurationConverterBase abstract : System::ComponentModel::TypeConverter
public abstract class ConfigurationConverterBase : System.ComponentModel.TypeConverter
type ConfigurationConverterBase = class
inherit TypeConverter
Public MustInherit Class ConfigurationConverterBase
Inherits TypeConverter
- Dědičnost
- Odvozené
Příklady
Následující příklady kódu ukazují, jak odvodit z ConfigurationConverterBase třídy pro vytvoření vlastního TimeSpan typu převaděče. Příklady také ukazují, jak tento typ použít ve vlastním oddílu.
Následující příklad kódu ukazuje, jak vytvořit vlastní TimeSpan typ převaděče ConfigurationConverterBase z třídy .
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Globalization;
using System.ComponentModel;
public sealed class CustomTimeSpanMinutesConverter :
ConfigurationConverterBase
{
internal bool ValidateType(object value,
Type expected)
{
bool result;
if ((value != null) &&
(value.GetType() != expected))
result = false;
else
result = true;
return result;
}
public override bool CanConvertTo(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override bool CanConvertFrom(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override object ConvertTo(
ITypeDescriptorContext ctx, CultureInfo ci,
object value, Type type)
{
ValidateType(value, typeof(TimeSpan));
long data = (long)(((TimeSpan)value).TotalMinutes);
return data.ToString(CultureInfo.InvariantCulture);
}
public override object ConvertFrom(
ITypeDescriptorContext ctx, CultureInfo ci, object data)
{
long min = long.Parse((string)data,
CultureInfo.InvariantCulture);
return TimeSpan.FromMinutes((double)min);
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Globalization
Imports System.ComponentModel
NotInheritable Public Class CustomTimeSpanMinutesConverter
Inherits ConfigurationConverterBase
Friend Function ValidateType(ByVal value As Object, _
ByVal expected As Type) As Boolean
Dim result As Boolean
If Not (value Is Nothing) _
AndAlso value.ToString() <> expected.ToString() Then
result = False
Else
result = True
End If
Return result
End Function 'ValidateType
Public Overrides Function CanConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return (type.ToString() = GetType(String).ToString())
End Function 'CanConvertTo
Public Overrides Function CanConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return (type.ToString() = GetType(String).ToString())
End Function 'CanConvertFrom
Public Overrides Function ConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal ci As CultureInfo, ByVal value As Object, _
ByVal type As Type) As Object
ValidateType(value, GetType(TimeSpan))
Dim data As Long = _
Fix(CType(value, TimeSpan).TotalMinutes)
Return data.ToString(CultureInfo.InvariantCulture)
End Function 'ConvertTo
Public Overrides Function ConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal ci As CultureInfo, ByVal data As Object) As Object
Dim min As Long = _
Long.Parse(CStr(data), CultureInfo.InvariantCulture)
Return TimeSpan.FromMinutes(System.Convert.ToDouble(min))
End Function 'ConvertFrom
End Class
Následující příklad kódu ukazuje, jak definovat vlastní oddíl, který používá předchozí vlastní TimeSpan převaděč.
// Define a custom section.
public sealed class CustomSection :
ConfigurationSection
{
public CustomSection()
{
}
[ConfigurationProperty("fileName", DefaultValue=" default.txt ")]
[TypeConverter(typeof(WhiteSpaceTrimStringConverter))]
public String FileName
{
get
{
return (String)this["fileName"];
}
set
{
this["fileName"] = value;
}
}
[ConfigurationProperty("maxIdleTime")]
[TypeConverter(typeof(CustomizedTimeSpanMinutesConverter))]
public TimeSpan MaxIdleTime
{
get
{
return (TimeSpan)this["maxIdleTime"];
}
set
{
this["maxIdleTime"] = value;
}
}
[ConfigurationProperty("timeDelay",
DefaultValue = "infinite")]
[TypeConverter(typeof(InfiniteTimeSpanConverter))]
public TimeSpan TimeDelay
{
get
{
return (TimeSpan)this["timeDelay"];
}
set
{
this["timeDelay"] = value;
}
}
[ConfigurationProperty("cdStr",
DefaultValue = "str0, str1",
IsRequired = true)]
[TypeConverter(typeof(
CommaDelimitedStringCollectionConverter))]
public StringCollection CdStr
{
get
{
return (StringCollection)this["cdStr"];
}
set
{
this["cdStr"] = value;
}
}
public enum Permissions
{
FullControl = 0,
Modify = 1,
ReadExecute = 2,
Read = 3,
Write = 4,
SpecialPermissions = 5
}
[ConfigurationProperty("permission", DefaultValue = Permissions.Read)]
public Permissions Permission
{
get
{
return (Permissions)this["permission"];
}
set
{
this["permission"] = value;
}
}
[ConfigurationProperty("maxUsers", DefaultValue="infinite")]
[TypeConverter(typeof(InfiniteIntConverter))]
public int MaxUsers
{
get
{
return (int)this["maxUsers"];
}
set
{
this["maxUsers"] = value;
}
}
}
}
' Define a custom section.
NotInheritable Public Class CustomSection
Inherits ConfigurationSection
Public Sub New()
End Sub
<ConfigurationProperty("fileName", _
DefaultValue:=" default.txt "), _
TypeConverter(GetType(WhiteSpaceTrimStringConverter))> _
Public Property FileName() As String
Get
Return CStr(Me("fileName"))
End Get
Set(ByVal value As String)
Me("fileName") = value
End Set
End Property
<ConfigurationProperty("maxIdleTime"), _
TypeConverter(GetType(CustomizedTimeSpanMinutesConverter))> _
Public Property MaxIdleTime() As TimeSpan
Get
Return CType(Me("maxIdleTime"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("maxIdleTime") = value
End Set
End Property
<ConfigurationProperty("timeDelay", _
DefaultValue:="infinite"), _
TypeConverter(GetType(InfiniteTimeSpanConverter))> _
Public Property TimeDelay() As TimeSpan
Get
Return CType(Me("timeDelay"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("timeDelay") = Value
End Set
End Property
<ConfigurationProperty("cdStr", _
DefaultValue:="str0, str1", _
IsRequired:=True), _
TypeConverter(GetType(CommaDelimitedStringCollectionConverter))> _
Public Property CdStr() As StringCollection
Get
Return CType(Me("cdStr"), StringCollection)
End Get
Set(ByVal value As StringCollection)
Me("cdStr") = value
End Set
End Property
Public Enum Permissions
FullControl = 0
Modify = 1
ReadExecute = 2
Read = 3
Write = 4
SpecialPermissions = 5
End Enum 'Permissions
<ConfigurationProperty("permission", _
DefaultValue:=Permissions.Read)> _
Public Property Permission() As Permissions
Get
Return CType(Me("permission"), Permissions)
End Get
Set(ByVal value As Permissions)
Me("permission") = Value
End Set
End Property
<ConfigurationProperty("maxUsers", _
DefaultValue:="infinite"), _
TypeConverter(GetType(InfiniteIntConverter))> _
Public Property MaxUsers() As Integer
Get
Return Fix(Me("maxUsers"))
End Get
Set(ByVal value As Integer)
Me("maxUsers") = Value
End Set
End Property
End Class
Následující příklad kódu ukazuje, jak vytvořit a upravit konfigurační soubor pomocí předchozí vlastní části.
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Globalization;
using System.ComponentModel;
namespace Samples.AspNet
{
// Define a custom section.
public sealed class CustomSection :
ConfigurationSection
{
public CustomSection()
{ }
[ConfigurationProperty("fileName", DefaultValue = "default.txt",
IsRequired = true, IsKey = false)]
[StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
MinLength = 1, MaxLength = 60)]
public string FileName
{
get
{
return (string)this["fileName"];
}
set
{
this["fileName"] = value;
}
}
[ConfigurationProperty("maxIdleTime")]
[TypeConverter(typeof(TsMinutesConverter))]
public TimeSpan MaxIdleTime
{
get
{
return (TimeSpan)this["maxIdleTime"];
}
set
{
this["maxIdleTime"] = value;
}
}
}
public sealed class TsMinutesConverter :
ConfigurationConverterBase
{
internal bool ValidateType(object value, Type expected)
{
bool result;
if ((value != null) &&
(value.GetType() != expected))
result = false;
else
result = true;
return result;
}
public override bool CanConvertTo(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override bool CanConvertFrom(
ITypeDescriptorContext ctx, Type type)
{
return (type == typeof(string));
}
public override object ConvertTo(
ITypeDescriptorContext ctx, CultureInfo ci,
object value, Type type)
{
ValidateType(value, typeof(TimeSpan));
long data = (long)(((TimeSpan)value).TotalMinutes);
return data.ToString(CultureInfo.InvariantCulture);
}
public override object ConvertFrom(
ITypeDescriptorContext ctx, CultureInfo ci, object data)
{
long min = long.Parse((string)data,
CultureInfo.InvariantCulture);
return TimeSpan.FromMinutes((double)min);
}
}
class UsingConfigutationConverterBase
{
// Create a custom section.
static void CreateSection()
{
try
{
CustomSection customSection;
// Get the current configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Create the section entry
// in the <configSections> and the
// related target section in <configuration>.
if (config.Sections["CustomSection"] == null)
{
customSection = new CustomSection();
config.Sections.Add("CustomSection", customSection);
customSection.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
catch (ConfigurationErrorsException err)
{
Console.WriteLine(err.ToString());
}
}
// Change custom section and write it to disk.
static void SerializeCustomSection()
{
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
CustomSection customSection =
config.Sections.Get("CustomSection")
as CustomSection;
TimeSpan ts =
new TimeSpan(1, 30, 30);
customSection.MaxIdleTime = ts;
config.Save();
string maxIdleTime =
customSection.MaxIdleTime.ToString();
Console.WriteLine("New max idle time: {0}",
maxIdleTime);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
// Read custom section from disk.
static void DeserializeCustomSection()
{
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
CustomSection customSection =
config.Sections.Get("CustomSection")
as CustomSection;
TimeSpan maxIdleTime =
customSection.MaxIdleTime;
Console.WriteLine("Max idle time: {0}",
maxIdleTime.ToString());
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
static void Main(string[] args)
{
CreateSection();
SerializeCustomSection();
DeserializeCustomSection();
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Configuration
Imports System.Globalization
Imports System.ComponentModel
' Define a custom section.
NotInheritable Public Class CustomSection
Inherits ConfigurationSection
Public Sub New()
End Sub
<ConfigurationProperty("fileName", _
DefaultValue:="default.txt", _
IsRequired:=True, IsKey:=False), _
StringValidator(InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
MinLength:=1, MaxLength:=60)> _
Public Property FileName() As String
Get
Return CStr(Me("fileName"))
End Get
Set(ByVal value As String)
Me("fileName") = value
End Set
End Property
<ConfigurationProperty("maxIdleTime"), _
TypeConverter(GetType(TsMinutesConverter))> _
Public Property MaxIdleTime() As TimeSpan
Get
Return CType(Me("maxIdleTime"), TimeSpan)
End Get
Set(ByVal value As TimeSpan)
Me("maxIdleTime") = Value
End Set
End Property
End Class
NotInheritable Public Class TsMinutesConverter
Inherits ConfigurationConverterBase
Friend Function ValidateType(value As Object, expected As Type) As Boolean
Dim result As Boolean
If Not (value Is Nothing) _
AndAlso (value.GetType().Equals(expected) <> True) Then
result = False
Else
result = True
End If
Return result
End Function 'ValidateType
Public Overrides Function CanConvertTo( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return type.Equals(GetType(String))
End Function 'CanConvertTo
Public Overrides Function CanConvertFrom( _
ByVal ctx As ITypeDescriptorContext, _
ByVal type As Type) As Boolean
Return type.Equals(GetType(String))
End Function 'CanConvertFrom
Public Overrides Function ConvertTo( _
ByVal ctx As ITypeDescriptorContext, ByVal ci As CultureInfo, _
ByVal value As Object, ByVal type As Type) As Object
ValidateType(value, GetType(TimeSpan))
Dim data As Long = _
Fix(CType(value, TimeSpan).TotalMinutes)
Return data.ToString(CultureInfo.InvariantCulture)
End Function 'ConvertTo
Public Overrides Function ConvertFrom( _
ByVal ctx As ITypeDescriptorContext, ByVal ci As CultureInfo, _
ByVal data As Object) As Object
Dim min As Long = _
Long.Parse(CStr(data), _
CultureInfo.InvariantCulture)
Return TimeSpan.FromMinutes( _
System.Convert.ToDouble(min))
End Function 'ConvertFrom
End Class
Class UsingConfigutationConverterBase
' Create a custom section.
Shared Sub CreateSection()
Try
Dim customSection As CustomSection
' Get the current configuration file.
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
' Create the section entry
' in the <configSections> and the
' related target section in <configuration>.
If config.Sections("CustomSection") Is Nothing Then
customSection = New CustomSection()
config.Sections.Add("CustomSection", customSection)
customSection.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
End If
Catch err As ConfigurationErrorsException
Console.WriteLine(err.ToString())
End Try
End Sub
' Change custom section and write it to disk.
Shared Sub SerializeCustomSection()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection _
As CustomSection = _
config.Sections.Get("CustomSection")
Dim ts As New TimeSpan(1, 30, 30)
customSection.MaxIdleTime = ts
config.Save()
Dim maxIdleTime As String = _
customSection.MaxIdleTime.ToString()
Console.WriteLine( _
"New max idle time: {0}", maxIdleTime)
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
' Read custom section from disk.
Shared Sub DeserializeCustomSection()
Try
Dim config _
As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
Dim customSection _
As CustomSection = _
config.Sections.Get("CustomSection")
Dim maxIdleTime As TimeSpan = _
customSection.MaxIdleTime
Console.WriteLine( _
"Max idle time: {0}", maxIdleTime.ToString())
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
Public Overloads Shared Sub Main(ByVal args() As String)
CreateSection()
SerializeCustomSection()
DeserializeCustomSection()
End Sub
End Class
Následuje výňatek z konfigurace, který byl použit v předchozím příkladu.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="CustomSection"
type="Samples.AspNet.CustomSection,
ConfigurationConverters,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null"
allowDefinition="Everywhere"
allowExeDefinition="MachineToApplication"
restartOnExternalChanges="true" />
</configSections>
<CustomSection fileName="default.txt" maxIdleTime="90" />
</configuration>
Poznámky
Je ConfigurationConverterBase základní třída pro typy konfigurace převaděče. Jedná se o typy, které převádějí řetězce, které se nacházejí v konfiguračním souboru, na související vlastnosti silného typu a z nich.
Konstruktory
ConfigurationConverterBase() |
Inicializuje novou instanci ConfigurationConverterBase třídy . |
Metody
CanConvertFrom(ITypeDescriptorContext, Type) |
Určuje, zda je převod povolen. |
CanConvertFrom(Type) |
Vrátí, zda tento převaděč může převést objekt daného typu na typ tohoto převaděče. (Zděděno od TypeConverter) |
CanConvertTo(ITypeDescriptorContext, Type) |
Určuje, zda je převod povolen. |
CanConvertTo(Type) |
Vrátí, zda tento převaděč lze převést objekt na zadaný typ. (Zděděno od TypeConverter) |
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object) |
Převede daný objekt na typ tohoto převaděče pomocí zadaného kontextu a informací o jazykové verzi. (Zděděno od TypeConverter) |
ConvertFrom(Object) |
Převede danou hodnotu na typ tohoto převaděče. (Zděděno od TypeConverter) |
ConvertFromInvariantString(ITypeDescriptorContext, String) |
Převede zadaný řetězec na typ tohoto převaděče pomocí invariantní jazykové verze a zadaného kontextu. (Zděděno od TypeConverter) |
ConvertFromInvariantString(String) |
Převede daný řetězec na typ tohoto převaděče pomocí invariantní jazykové verze. (Zděděno od TypeConverter) |
ConvertFromString(ITypeDescriptorContext, CultureInfo, String) |
Převede daný text na objekt pomocí zadaného kontextu a informací o jazykové verzi. (Zděděno od TypeConverter) |
ConvertFromString(ITypeDescriptorContext, String) |
Převede zadaný text na objekt pomocí zadaného kontextu. (Zděděno od TypeConverter) |
ConvertFromString(String) |
Převede zadaný text na objekt. (Zděděno od TypeConverter) |
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) |
Převede daný objekt hodnoty na zadaný typ pomocí zadaného kontextu a jazykové verze informací. (Zděděno od TypeConverter) |
ConvertTo(Object, Type) |
Převede daný objekt hodnoty na zadaný typ pomocí argumentů. (Zděděno od TypeConverter) |
ConvertToInvariantString(ITypeDescriptorContext, Object) |
Převede zadanou hodnotu na reprezentaci řetězce invariantní jazykové verze pomocí zadaného kontextu. (Zděděno od TypeConverter) |
ConvertToInvariantString(Object) |
Převede zadanou hodnotu na reprezentaci řetězce invariantní jazykové verze. (Zděděno od TypeConverter) |
ConvertToString(ITypeDescriptorContext, CultureInfo, Object) |
Převede danou hodnotu na řetězcovou reprezentaci pomocí zadaného kontextu a informací o jazykové verzi. (Zděděno od TypeConverter) |
ConvertToString(ITypeDescriptorContext, Object) |
Převede danou hodnotu na řetězcovou reprezentaci pomocí daného kontextu. (Zděděno od TypeConverter) |
ConvertToString(Object) |
Převede zadanou hodnotu na řetězcovou reprezentaci. (Zděděno od TypeConverter) |
CreateInstance(IDictionary) |
Znovu vytvoří danou Object sadu hodnot vlastností pro objekt. (Zděděno od TypeConverter) |
CreateInstance(ITypeDescriptorContext, IDictionary) |
Vytvoří instanci typu, ke kterému TypeConverter je přidružena, pomocí zadaného kontextu, vzhledem k sadě hodnot vlastností pro objekt. (Zděděno od TypeConverter) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetConvertFromException(Object) |
Vrátí výjimku, která se vyvolá, když nelze provést převod. (Zděděno od TypeConverter) |
GetConvertToException(Object, Type) |
Vrátí výjimku, která se vyvolá, když nelze provést převod. (Zděděno od TypeConverter) |
GetCreateInstanceSupported() |
Vrátí, zda změna hodnoty tohoto objektu vyžaduje volání CreateInstance(IDictionary) metody k vytvoření nové hodnoty. (Zděděno od TypeConverter) |
GetCreateInstanceSupported(ITypeDescriptorContext) |
Vrátí, zda změna hodnoty u tohoto objektu vyžaduje volání CreateInstance(IDictionary) k vytvoření nové hodnoty pomocí zadaného kontextu. (Zděděno od TypeConverter) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetProperties(ITypeDescriptorContext, Object) |
Vrátí kolekci vlastností pro typ pole určený parametrem value pomocí zadaného kontextu. (Zděděno od TypeConverter) |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
Vrátí kolekci vlastností pro typ pole určený parametrem value pomocí zadaného kontextu a atributů. (Zděděno od TypeConverter) |
GetProperties(Object) |
Vrátí kolekci vlastností pro typ pole určený parametrem hodnoty. (Zděděno od TypeConverter) |
GetPropertiesSupported() |
Vrátí, zda tento objekt podporuje vlastnosti. (Zděděno od TypeConverter) |
GetPropertiesSupported(ITypeDescriptorContext) |
Vrátí, zda tento objekt podporuje vlastnosti pomocí zadaného kontextu. (Zděděno od TypeConverter) |
GetStandardValues() |
Vrátí kolekci standardních hodnot z výchozího kontextu pro datový typ, pro který je určen převaděč typů. (Zděděno od TypeConverter) |
GetStandardValues(ITypeDescriptorContext) |
Vrátí kolekci standardních hodnot pro datový typ, pro který je tento převaděč typů určen, pokud je k dispozici kontext formátu. (Zděděno od TypeConverter) |
GetStandardValuesExclusive() |
Vrátí, zda je kolekce standardních hodnot vrácená z GetStandardValues() výhradního seznamu. (Zděděno od TypeConverter) |
GetStandardValuesExclusive(ITypeDescriptorContext) |
Vrátí, zda kolekce standardních hodnot vrácených z GetStandardValues() je výhradním seznamem možných hodnot pomocí zadaného kontextu. (Zděděno od TypeConverter) |
GetStandardValuesSupported() |
Vrátí, zda tento objekt podporuje standardní sadu hodnot, které lze vybrat ze seznamu. (Zděděno od TypeConverter) |
GetStandardValuesSupported(ITypeDescriptorContext) |
Vrátí, zda tento objekt podporuje standardní sadu hodnot, které lze vybrat ze seznamu pomocí zadaného kontextu. (Zděděno od TypeConverter) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
IsValid(ITypeDescriptorContext, Object) |
Vrátí, zda daný objekt hodnoty je platný pro tento typ a pro zadaný kontext. (Zděděno od TypeConverter) |
IsValid(Object) |
Vrátí, zda je daný objekt hodnoty platný pro tento typ. (Zděděno od TypeConverter) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
SortProperties(PropertyDescriptorCollection, String[]) |
Seřadí kolekci vlastností. (Zděděno od TypeConverter) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |