ISerializable Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir nesnenin ikili ve XML serileştirmesi aracılığıyla kendi serileştirmesini ve seri durumdan çıkarmasını denetlemesine izin verir.
public interface class ISerializable
public interface ISerializable
[System.Runtime.InteropServices.ComVisible(true)]
public interface ISerializable
type ISerializable = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type ISerializable = interface
Public Interface ISerializable
- Türetilmiş
- Öznitelikler
Açıklamalar
İkili veya XML serileştirme kullanılarak seri hale getirilebilen tüm sınıflar SerializableAttributeile işaretlenmelidir. Bir sınıfın ikili veya XML serileştirme işlemini denetlemesi gerekiyorsa arabirimini ISerializable uygulayabilir. serileştirme Formatter zamanında öğesini GetObjectData çağırır ve sağlanan SerializationInfo öğesini nesneyi temsil etmek için gereken tüm verilerle doldurur. , Formatter grafikteki nesnenin türüyle bir SerializationInfo oluşturur. Kendilerine proxy göndermesi gereken nesneler, iletilen bilgileri değiştirmek için ve FullTypeNameAssemblyName yöntemlerini kullanabilirSerializationInfo.
Sınıf devralma durumunda, uygulayan ISerializablebir temel sınıftan türetilen bir sınıfı seri hale getirmek mümkündür. Bu durumda, türetilmiş sınıf uygulaması içinde temel sınıf uygulamasını GetObjectDataGetObjectDataçağırmalıdır. Aksi takdirde, temel sınıftaki veriler seri hale getirilmeyecektir.
Arabirimi, ISerializable imzası constructor (SerializationInfo information, StreamingContext context)olan bir oluşturucuyu ifade eder. Seri durumdan çıkarma zamanında, geçerli oluşturucu yalnızca içindeki SerializationInfo veriler biçimlendirici tarafından seri durumdan çıkarıldıktan sonra çağrılır. Genel olarak, sınıfı değilse protectedbu oluşturucu olmalıdırsealed.
Nesnelerin seri durumdan çıkarılma sırası garanti edilemez. Örneğin, bir tür henüz seri durumdan çıkarılmamış bir türe başvurursa, bir özel durum oluşur. Bu tür bağımlılıklara sahip türler oluşturuyorsanız, arabirimini ve IDeserializationCallback yöntemini uygulayarak OnDeserialization soruna geçici bir çözüm bulabilirsiniz.
Serileştirme mimarisi, genişleten türlerle aynı şekilde genişleten MarshalByRefObject nesne türlerini Objectişler. Bu türler ile SerializableAttribute işaretlenebilir ve arabirimini başka bir nesne türü olarak uygulayabilir ISerializable . Nesne durumları yakalanacak ve akışta kalıcı hale gelecek.
Bu türler aracılığıyla System.Runtime.Remotingkullanıldığında uzaktan iletişim altyapısı, tipik serileştirmeyi önleyen ve bunun yerine bir ara sunucuyu MarshalByRefObjectseri hale getiren bir vekil sağlar. Vekil, belirli bir türdeki nesneleri seri hale getirme ve seri durumdan çıkarma hakkında bilgi edinen bir yardımcıdır. Çoğu durumda kullanıcıya görünmeyen ara sunucu türünde ObjRefolacaktır.
Genel tasarım deseni olarak, bir sınıfın hem seri hale getirilebilir özniteliğiyle işaretlenmesi hem de genişletmesi MarshalByRefObjectolağan dışı olacaktır. Geliştiriciler, bu iki özelliği birleştirirken olası serileştirme ve uzaktan iletişim senaryoları hakkında dikkatli düşünmelidir. Bunun uygulanabileceği bir örnek, iledir MemoryStream. temel sınıfı MemoryStream (Stream) öğesinden MarshalByRefObjectgenişletilirken, bir MemoryStream durumunu yakalamak ve istediğiniz zaman geri yüklemek mümkündür. Bu nedenle, bu akışın durumunu bir veritabanına seri hale getirmek ve daha sonraki bir noktada geri yüklemek anlamlı olabilir. Ancak uzaktan iletişim aracılığıyla kullanıldığında, bu tür bir nesne prxied olacaktır.
genişleten MarshalByRefObjectsınıfların seri hale getirilmesi hakkında daha fazla bilgi için bkz RemotingSurrogateSelector. . uygulaması ISerializablehakkında daha fazla bilgi için bkz. Özel Serileştirme.
Note
Bu arabirim, kullanarak System.Text.JsonJSON serileştirmesi için geçerli değildir.
Uygulayanlara Notlar
Bir nesnenin kendi serileştirme ve seri durumdan çıkarma işlemlerine katılabilmesini sağlamak için bu arabirimi uygulayın.
Yöntemler
| Name | Description |
|---|---|
| GetObjectData(SerializationInfo, StreamingContext) |
Geçersiz.
hedef nesneyi seri hale getirmek için gereken verilerle doldurur SerializationInfo . |