ডেটা কন্ট্রাক্টরিশালাইজার ব্যবহার করে সিরিয়ালকরণ করার সময় আমি কীভাবে কোনও সম্পত্তি উপেক্ষা করতে পারি?


125

আমি একটি ক্লাসকে সিরিয়াল করার জন্য .NET 3.5SP1 এবং ডেটা কন্ট্র্যাক্টসরিশালাইজার ব্যবহার করছি। এসপি 1 এ, তারা আচরণটি পরিবর্তন করেছিল যাতে আপনাকে ক্লাসে ডেটা কন্ট্রাক্ট / ডেটা মেম্বার বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করতে না হয় এবং এটি কেবল পুরো জিনিসটিকে সিরিয়ালাইজ করবে। এই ব্যবহারটি আমি ব্যবহার করছি তবে এখন সিরিয়ালাইজার থেকে আমার একটি সম্পত্তি উপেক্ষা করা দরকার। আমি জানি যে এটির একটি উপায় হ'ল ক্লাসে ডেটা কনট্রাক্ট বৈশিষ্ট্য যুক্ত করা এবং আমি যে সদস্যদের অন্তর্ভুক্ত করতে চাই তার সবগুলিতে কেবল ডেটা মেম্বার বৈশিষ্ট্যটি রেখেছি। আমার কাছে কারণ রয়েছে, এটি আমার পক্ষে কার্যকর হবে না।

সুতরাং আমার প্রশ্নটি হ'ল, ডেটা কন্ট্র্যাক্টরিশালাইজার কোনও সম্পত্তি উপেক্ষা করার জন্য আমি ব্যবহার করতে পারি এমন কোনও বৈশিষ্ট্য বা কিছু আছে কি?

উত্তর:


176

5
আমার ডোমেন স্তরে যথাযথ সমাবেশ সংক্রান্ত রেফারেন্স ছিল না, তারপরে আমি ডকুমেন্টেশনটি মিস করেছি এবং এটি .NET 4.5 এর নতুন বৈশিষ্ট্য বলে ভেবে শেষ করেছি। সাফল্য ছাড়াই আমার মন্তব্য মুছতে এই থ্রেডটি ফিরে পাওয়ার চেষ্টা করেছিল (তাড়াতাড়ি ছিল)। তদ্ব্যতীত, এই উত্তরের তারিখটি দেখে একটি ঘণ্টা বাজানো উচিত .... ২০০৯। নেট 4.5 পোস্ট ...) আপনার সময় নষ্ট করার জন্য দুঃখিত
প্লু

2
নেট
.৪.৪

1
এমনকি তৃতীয় পক্ষের লাইব্রেরিগুলি JSON.NET এর মতো [IgnoreDataMember] জন্য সমর্থন যোগ করেছে।
ডগ

5
একটি সংক্ষিপ্ত উদাহরণ এটি কি ভোটের মূল্য হিসাবে একটি উত্তর দিতে হবে না?
তাজ

1
এই উত্তরটি অসম্পূর্ণ এবং এভাবে বিভ্রান্তিকর। [IgnoreDataMember]ক্লাসের [Serializable]বৈশিষ্ট্য থাকলে কাজ করবে না । ডগের উত্তরে বিশদটি দেখুন ।
অ্যালেক্স ফেইনস্টেইন

165

অতিরিক্তভাবে, ডেটা কন্ট্র্যাক্টসরিয়ালাইজার [সিরিয়ালাইজেবল] হিসাবে চিহ্নিত আইটেমগুলিকে সিরিয়ালাইজ করবে এবং বেনামে প্রকারের সিরিয়ালকরণের জন্য সমর্থনকে অনুমতি দেওয়ার জন্য .NET 3.5 SP1 এবং পরে চিহ্নবিহীন প্রকারগুলি সিরিয়ালিয়াল করবে।

সুতরাং, কোনও সদস্যকে সিরিয়ালাইজ করা থেকে কীভাবে রাখবেন সে সম্পর্কে এটি নির্ভর করে আপনি কীভাবে আপনার ক্লাসটি সাজিয়েছেন:

  • আপনি যদি ব্যবহার করেন [DataContract]তবে [DataMember]সম্পত্তিটির জন্য অপসারণ করুন ।
  • আপনি যদি ব্যবহার করেন [Serializable]তবে সম্পত্তিটির জন্য ক্ষেত্রের[NonSerialized] সামনে যুক্ত করুন ।
  • আপনি যদি নিজের ক্লাসটি সজ্জিত না করেন তবে আপনার [IgnoreDataMember]সম্পত্তিটি যুক্ত করা উচিত ।

1
"আপনার ক্লাসে সজ্জিত" বলতে আপনার অর্থ কী?
alamin

আপনি যদি আপনার ক্লাসে [ডেটা কনট্রাক্ট] বা [সিরিয়ালাইজযোগ্য] এর মতো কোনও বৈশিষ্ট্য ব্যবহার না করেন, তবে আপনি যে সম্পত্তিটি সিরিয়াল করতে চান না তাতে আপনি [IgnoreDataMember] যুক্ত করবেন। পল দেখা উত্তর বা checkoutall.com/Blog/Index/201410240204236271/...
ডগ

8
এটি গৃহীত উত্তরের চেয়ে অনেক বেশি তথ্যপূর্ণ।
pvgoran

সেই সদস্যটিকে উপেক্ষা করার এবং ডেটা স্ট্রাকচার / ক্লাসটি সিরিয়ালকরণের কী উপায় আছে?
ryanwebjackson

[সিরিয়ালাইজবল] যখন ব্যবহার করা হয়েছিল তখন কোনও বিচ্ছিন্নতা বাদ দিয়ে কীভাবে?
ড্যানিয়েল

31

এক্সএমএল সিরিয়ালাইজিংয়ে, কোনও শ্রেণি সিরিয়াল করার সময় আপনি কোনও সম্পত্তি উপেক্ষা করার জন্য [XMLIgnore] বৈশিষ্ট্য (System.XML.Serialization.XMLIgnoreAttribute) ব্যবহার করতে পারেন।

এটি আপনার কাজে লাগতে পারে (অথবা এক্সএমএল সিরিয়ালাইজ করার সময় কোনও সম্পত্তি উপেক্ষা করার উপায়টি যখন আমি যেমন ছিলাম তখন কীভাবে এই প্রশ্নটি পেয়েছিল যে কেউ এই প্রশ্নটি খুঁজে পেয়েছিল কেবল এটিই কাজে লাগতে পারে)।


4
আহ নেতিবাচক ভোট। কেবল ভেবেছিলাম আমি পোস্ট করব কারণ যখন ক্লাসকে সিরিয়াল করার সময় আমি কোনও সম্পত্তিকে কীভাবে উপেক্ষা করব সে সম্পর্কে অনুসন্ধান করেছি, তখন এই পোস্টটি সামনে এসেছিল। এবং আমি এই পোস্টটি এখানে রাখতে চাইলে যদি কেউ এই পোস্টটি আমার মতো করে পায়।
ক্রিস অ্যাডামস

[মেটাতে] আমি মনে করি তারা নেতিবাচক ভোট দিয়েছে কারণ আপনার এক্সএমএলশেরিয়ালাইজেশন সম্পর্কে আরও একটি (আরও স্পষ্টিযুক্ত) প্রশ্ন খোলা উচিত এবং এর উত্তর দেওয়া উচিত, যাতে লোকেরা তাদের অনুসন্ধানে এই প্রশ্নটিকে আরও প্রাসঙ্গিক বলে মনে করবে
স্পার্ক

8
এই উত্তরটি হ'ল আমি যা খুঁজছিলাম
আকলাভ 1

2

ক্ষেত্রটি [নন-সিরিয়ালাইজড ()] বৈশিষ্ট্যের সাথে চিহ্নিত করার চেষ্টা করুন। এটি সিরিয়ালাইজারকে ক্ষেত্রটি উপেক্ষা করতে বলবে।

https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs.110).aspx


1
ডেটা কন্ট্র্যাক্টস্রায়ালাইজার ব্যবহার করার সময় নয়
টম

1
তিনি ক্ষেত্র নয় সম্পত্তি সম্পর্কে জিজ্ঞাসা!
11

0

আপনি যা বলছেন তা এই অবস্থানের এমএসডিএন লাইব্রেরিতে যা বলে তার সাথে দ্বন্দ্ব রয়েছে:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

আপনার উল্লেখ করা এসপি 1 বৈশিষ্ট্যের কোনও উল্লেখ আমি দেখতে পাচ্ছি না।


1
: আপনি ডক এখানে (3 য় অনুচ্ছেদ, 2nd বাক্য) জানতে পারেন msdn.microsoft.com/en-us/library/ms733127.aspx
NotDan

আপনি যে লিঙ্কটি পোস্ট করেছেন সে সম্পর্কে আপনি সঠিক, যদিও তারা সেখানে এটি উল্লেখ না করে তাও আমি নিশ্চিত নই।
নোটড্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.