C # | Линк | SubSonic - Объект класса - PullRequest
1 голос
/ 07 августа 2009

У меня есть этот класс / объект ниже:

public class Person
{
  public  string FirstName;
  public  string MI;
  public  string LastName;
}

Person p=new Person();
      p.FirstName = "Jeff";
      p.MI = "A";
      p.LastName = "Price";

Есть ли какие-либо встроенные в linq или c # или в subsonic, которые создадут вывод этого?:

string myString = "FirstName=\"Jeff\" p.MI=\"A\" p.LastName=\"Price\"";

Ответы [ 2 ]

2 голосов
/ 07 августа 2009

Кажется, вам нужна перегрузка ToString в Person. Кроме того, не выставляйте публичные такие поля. Используйте свойства .

    public class Person
    {
        public string FirstName { get; set; }
        public string MI { get; set; }
        public string LastName { get; set; }

        public override string ToString()
        {
            return "FirstName=\"" + FirstName + "\" p.MI=\"" + MI + "\" p.LastName=\"" + LastName + "\"";
        }
    }

(редактирование)

Вот ваш запрос (но для него требуются свойства):

    public static class ObjectPrettyPrint
    {
        public static string ToString(object obj)
        {
            Type type = obj.GetType();
            PropertyInfo[] props = type.GetProperties();
            StringBuilder sb = new StringBuilder();
            foreach (var prop in props)
            {
                sb.Append(prop.Name);
                sb.Append("=\"");
                sb.Append(prop.GetValue(obj, null));
                sb.Append("\" ");
            }

            return sb.ToString();
        }
    }

Использование:

        Console.WriteLine(ObjectPrettyPrint.ToString(new Person { FirstName, = "A", MI = "B", LastName = "C"  }));
1 голос
/ 07 августа 2009

Ну, как для LINQ и C #, не по умолчанию.

Однако в классе Person вы можете переопределить событие ToString (), чтобы сделать это за вас.

    public override string ToString()
    {
        return string.Format("p.Firstname={0} p.MI={1} p.LastName={2}", FirstName, MI, LastName);
    }

И тогда вы бы просто назвали это следующим образом:

string myString = p.ToString();

Что даст вам результат, который вы ищете.

...