मेरे पास कुछ निजी और सार्वजनिक क्षेत्रों और संपत्तियों वाला एक वर्ग है।

[MessagePackObject(false)]
public class Person
{
    [Key(1)]
    public string Name { get; set; }
    [IgnoreMember]
    private int _age;
    [Key(2)]
    public int Age { get { return _age; } set { _age = value; } }
}

कुछ मामलों में मुझे Age को क्रमबद्ध करने की आवश्यकता नहीं है, मुझे केवल कुछ क्षेत्रों को क्रमबद्ध करने की आवश्यकता है (उदाहरण के लिए केवल Name)। तो मुझे सभी ऑब्जेक्ट को क्रमबद्ध करने और आंशिक क्रमबद्ध करने के लिए 2 विधियों की आवश्यकता है। मैं इसे कैसे व्यवस्थित कर सकता हूं?

0
Gor Asatryan 11 फरवरी 2021, 11:50
अगर किसी व्यक्ति की उम्र हो भी सकती है और नहीं भी, क्या आप int? का उपयोग कर सकते हैं
 – 
JonasH
11 फरवरी 2021, 12:43
मैं बिना उम्र के व्यक्ति के डिफ़ॉल्ट int मान का उपयोग करना चाहता हूं। अक्रमांकन के बाद आयु 0 हो सकती है।
 – 
Gor Asatryan
11 फरवरी 2021, 12:50
आप इसके बजाय एक निजी int? को क्रमबद्ध कर सकते हैं, और जनता को जो भी मूल्य चाहते हैं, यानी _age ?? 0 को डिफ़ॉल्ट करने दें
 – 
JonasH
11 फरवरी 2021, 13:00
इससे कोई फर्क नहीं पड़ता। समस्या यह है कि मैं केवल कुछ चयनित क्षेत्रों को क्रमबद्ध नहीं कर सकता
 – 
Gor Asatryan
11 फरवरी 2021, 14:35

1 उत्तर

सबसे बढ़िया उत्तर

मेरे अपने प्रश्न का उत्तर।

मुझे मिला एकमात्र समाधान Name को बेस क्लास BasePerson में स्थानांतरित करना है। मैं ऑब्जेक्ट को BasePerson के रूप में क्रमबद्ध करूंगा और फिर बाइट्स को Person

[MessagePackObject(false)]
public class BasePerson
{
    [Key(1)]
    public string Name { get; set; }
}

[MessagePackObject(false)]
public class Person
{
    [IgnoreMember]
    private int _age;
    [Key(2)]
    public int Age { get { return _age; } set { _age = value; } }
}

उपयोग:

Person person = new Person()
{
    Name = "Gor",
    Age = 26
};
var serializedBytes = MessagepackSerializer.Serialize<BasePerson>(person);
// will give me person with `Name` "Gor" and `Age` 0 (default value of int)
var personWithoutAge = MessagepackSerializer.Deserialize<Person>(serializedBytes ); 
0
Gor Asatryan 12 फरवरी 2021, 12:14