BinaryFormatter和更改的属性类型

时间:2018-11-14 13:44:42

标签: c# serialization back binaryformatter

我们必须将我们的属性之一从可为空的整数更改为字符串。 在更改了类之后,我们得到了异常:

  

类型为'System.Int32'的对象不能转换为类型   'System.String'。

我们使用以下代码反序列化对象:

#include <cstdlib>
#include <ctime>
#include <cstring>
#include <iostream>

using namespace std;

int numbers;
int array[100];

void generator()
{
   srand((unsigned)time(0));
   for(int i = 0; i < 100; i++)
   {
       numbers  = (rand() % 900000) + 100000;
       array[i] = numbers;
       cout << numbers << endl;
   }
}

void sorted_list()
{
      int i = 100, a, b, c;
      for (a = 0; a < i - 1; a++)
      {
          for(b = 1; b < i; b++)
          {
              if (array[b] < array[b - 1])
              {
                  c = array[b];
                  array[b]= array[b - 1];
                  array[b - 1]=c;
              }
           }
      }

      for (a = 0; a < i; a++)
      {
          cout << a << ": " << array[a] << "\n";
      }
}


bool happyNr(int a){
    if (a<100000 || a>999999) return false;
    int half1=0, half2=0;
    for (int i=0;i<6;i++){
        if (i<3) {half1+=a%10; a=a/10;}
        else {half2+=a%10; a=a/10;}
    }
    return half1==half2;
}

int menu()
{
    int choice;
    cout<<"\n_______________MENU_______________";
    cout<<"\n 1. Generate random numbers";
    cout<<"\n 2. Sorted array";
    cout<<"\n 3. Happy numbers";
    cout<<"\n 4. Exit";
     do
      {
         cout<<"\n Choice: ";
         cin>>choice;
      }while(choice<1||choice>4);

    return(choice);
}
int main()
{
int i;
do
    {
       i=menu();
       switch(i)
          {
            case 1: generator();break;
            case 2: sorted_list();break;
            case 3: happyNr(i);break;
          }
   }
while(i!=4);
return 0;
}

使用旧对象最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试自定义属性:

   public class MyClass
    {
        private string myString { get; set; }

        public int MyInt
        {
            get { return int.Parse(myString); }
            set { myString = value.ToString(); }
        }
    }