Cómo crear una propiedad para una lista

private List newList; public List NewList { get{return newList;} set{newList = value;} } 

Quiero crear algo como esto, pero esto no funcionará. es solo un ejemplo para demostrar mi objective, ya que es bastante común crear propiedades para string e int e incluso T, pero nunca he visto una propiedad de List. ¿Es posible hacer una cosa así, crear una propiedad para el tipo List?

EDITAR

Tengo una clase normal que tiene propiedades normales (propiedades de cadena, propiedades int, etc.) pero tengo esta propiedad que almacena las opciones de usuario, así que en la capa de presentación tuve que convertirlas en una cadena para poder almacenarlas el objeto. ¡Ahora es posible tener una propiedad de tipo Lista para almacenar los multivalores de una manera mejor y más limpia, en lugar de convertir la información en una cadena y luego dividirla y unirla nuevamente! Gracias de nuevo = D

EDIT2

 private List<KeyValuePair> _settings; public List<KeyValuePair> MySettings { get { return _settings; } set { _settings = value; } } 

Utilicé el código exacto que publicaste, pero la propiedad aún no aparece en la instancia del objeto, así que intenté agregar código en la configuración de obtención y configuración (me pregunto por qué los dejaste en blanco o significa algo?) Y también agregué un código privado. variable en la clase, pero todavía no aparece en las propiedades de la instancia del objeto!

Espero que puedas proporcionar el código exacto para implementar esta propiedad y un código simple que asigne o recupere de / a una instancia de este objeto de clase. Es la primera vez que incluso escuchas sobre este KeyValuePair y todos los tutoriales son bastante simples y no son para mi. caso, lo siento

La última edición: Después de mucha investigación y la ayuda de Mark Avenius, encontré la respuesta perfecta. Espero que todos puedan beneficiarse de esto.

¡AHORA! CÓMO CREAR UNA PROPIEDAD PARA UNA LISTA:

La clase de opciones

 Public Class Options { private string id; private int option; public int ID { get { return id; } set { id= value; } } public string Option { get { return option; } set { option = value; } } } 

La clase de usuarios

 public class Users { private int userId; private string pass; private List userOptions = new List(); public int ID { get { return userId; } set { user = userId; } } public string Pass { get { return pass; } set { pass = value; } } public List OptionsList { get { return userOptions; } set { userOptions = value; } } } 

La capa de presentación

  Users newUser = new Users (); Options userOption = new Options (); userOption.ID = int.Parse(txtBxID.Text); userOption.Option = txtBxOption.Text; Item.Options.Add(userOption); 

T debe definirse dentro del scope en el que está trabajando. Por lo tanto, lo que has publicado funcionará si tu clase es genérica en T :

 public class MyClass { private List newList; public List NewList { get{return newList;} set{newList = value;} } } 

De lo contrario, tienes que usar un tipo definido.

EDITAR: según la solicitud de @ lKashef, a continuación se muestra cómo tener una propiedad de lista:

 private List newList; public List NewList { get{return newList;} set{newList = value;} } 

Esto puede ir dentro de una clase no genérica.

Edición 2: en respuesta a su segunda pregunta (en su edición), no recomendaría usar una lista para este tipo de manejo de datos (si lo estoy entendiendo correctamente). Yo pondría la configuración del usuario en su propia clase (o estructura, si lo desea) y tendría una propiedad de este tipo en su clase original:

 public class UserSettings { string FirstName { get; set; } string LastName { get; set; } // etc. } public class MyClass { string MyClassProperty1 { get; set; } // etc. UserSettings MySettings { get; set; } } 

De esta manera, ha nombrado propiedades a las que puede hacer referencia en lugar de un índice arbitrario en una lista. Por ejemplo, puede hacer referencia a MySettings.FirstName en lugar de MySettingsList[0] .

Déjame saber si tienes más preguntas.

EDIT 3: Para la pregunta en los comentarios, su propiedad sería así:

 public class MyClass { public List> MySettings { get; set; } } 

EDIT 4: basado en la edición de la pregunta 2, a continuación se explica cómo usaría esto:

 public class MyClass { // note that this type of property declaration is called an "Automatic Property" and // it means the same thing as you had written (the private backing variable is used behind the scenes, but you don't see it) public List MySettings { get; set; } } public class MyConsumingClass { public void MyMethod { MyClass myClass = new MyClass(); myClass.MySettings = new List>(); myClass.MySettings.Add(new KeyValuePair("SomeKeyValue", "SomeValue")); // etc. } } 

Usted mencionó que “la propiedad aún no aparecerá en la instancia del objeto” y no estoy seguro de lo que quiere decir. ¿Esta propiedad no aparece en IntelliSense? ¿Está seguro de que ha creado una instancia de MyClass (como myClass.MySettings anterior), o está intentando acceder a ella como una propiedad estática (como MyClass.MySettings )?

 public class MyClass { private List list; public List MyList { get { return list; } set { list = value; } } } 

Entonces puedes hacer algo como

 MyClass instance1 = new MyClass(); List integers = instance1.MyList; MyClass instance2 = new MyClass(); IEnumerable persons = instance2.MyList; 

Podría hacer esto, pero el parámetro genérico T debe declararse en la clase contenedora:

 public class Foo { public List NewList { get; set; } } 

Es posible tener una propiedad de tipo List pero su clase también debe pasar la T también.

 public class ClassName { public List MyProperty { get; set; } } 

Alternativa simple y efectiva:

 public class ClassName { public List MyProperty { get; set; } } 

o

 public class ClassName { public List MyProperty { get; set; } } 

Para las diferencias vea esta publicación: Lista vs Lista

Especifique el tipo de T, o si desea convertirlo en genérico, deberá hacer que la clase padre sea genérica.

 public class MyClass { etc