Может ли свойство строки иметь функцию? - PullRequest
4 голосов
/ 23 июля 2011

Это мой первый пост на этом сайте, и я очень рад этому сообществу.

Я создаю систему электронной почты генератора.Это делается для того, чтобы узнать имя студента, сгенерировать несколько шаблонов, проверить, доступен ли адрес электронной почты, и, наконец, добавить его в базу данных.

Например, мое имя - «Оскар Даниэль», а моя фамилия -"Fimbres Puente".Система должна будет сгенерировать odfimbresp@domain.com (на самом деле она генерирует много шаблонов, это только один из них).

У меня есть класс с именем Person, конструктор получает первый и последнийназвание.Для генерации шаблона.Вот так:

public class Person
{
    public string FirstName { get; set; }
    public string LastName1 { get; set; }
    public string LastName2 { get; set; }
    public string Email { get; set; }

    public string[] FirstName_Array { get; set; }
    public string[] LastName1_Array { get; set; }
    public string[] LastName2_Array { get; set; }

    public Person(string firstName, string lastName1, string lastName2)
    {
        ...

        // it is necessary to split each string in an array
        FirstName_Array = SplitName(firstName);
        LastName1_Array = SplitName(lastName1);
        LastName2_Array = SplitName(lastName2);
    }
}

Как вы можете видеть выше, мне нужно разбить каждую строку, используя пробел, как разделитель.Например, свойства будут следующими:

Имя: Оскар Даниэль

Имя (Массив): {Оскар, Даниэль}

Поэтому мой вопрос будет: Есть ли способ, которым я могу удалить массив свойств?Потому что я думаю, что я избыточен.Я пытался добавить функцию с именем ToArray () только для них, но я не могу этого сделать.

Любые вопросы или сомнения, пожалуйста, дайте мне знать.

1 Ответ

7 голосов
/ 23 июля 2011

Просто чтобы выбросить это туда. Я думаю, что у вас есть класс Person со свойствами, такими как имя, фамилия и т. Д., И т. Д. И вам нужно предпринять некоторые действия с личностью, чтобы сгенерировать некоторые шаблоны, такие как firstletter массива firstname + первые 4 буквы фамилии + some pattern@domain.com.

Я полагаю, вы пытаетесь избежать избыточных свойств массива. Если так, почему у вас нет метода для каждого шаблона, например,

public class person
{
  public string firstname { get;set;}
  public string lastname { get;set;}

  public person(string fname, string lname)
  {
    firstname = fname;
    lastname = lname;
  }

  public string GetEmailRespPattern()
  {
    //split firstname, take what you want
    //take what you want from last name.
   // add extra information.
   //concatenate and return it.
  }
}

Это может быть слишком просто, и, конечно, вам нужно каждый раз пересчитывать шаблон, но он прост и удобочитаем. Все зависит от того, как вы собираетесь его использовать.

Вы даже можете использовать регулярные выражения для извлечения нужных данных из разных свойств. Если у вас есть конкретные правила, их легко написать. В качестве вступления здесь - некоторая информация о регулярном выражении.

Но чтобы ответить на вопрос в вашем заголовке, да, свойство строки (или любой объект) может иметь метод расширения, как, скажем, ToArray () (любое имя, которое вы хотите). Смотри здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...