Принятие типа данных generi c в список конструкторов классов - PullRequest
0 голосов
/ 27 мая 2020

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

publi c void SendEmail (string sender, EmailObjects emailObjects)

 public class EmailObjects 
    {
        public string EMAILLIST { get; set; }

        public string CC_EMAILLIST { get; set; }

        public string BCC_EMAILLIST { get; set; }

        public string subjectline { get; set; }

        **public List<T> lstOfValueToReplace { get; set; }**

        public string HTMLbody { get; set; }

        **public List<string>  lsthtmlBody { get; set; }**
    }

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Ответы Мартина Верьянса кажутся простейшими, но, возможно, вы можете использовать

public List<dynamic> DynamicList {get;set;}

Вы можете проверить типы объектов следующим образом:

 dynamic dynamicObject;

 dynamicObject = "I am a System.String";
 Console.WriteLine(dynamicObject.GetType()); //System.String

 dynamicObject = 420691337;
 Console.WriteLine(dynamicObject.GetType()); //System.Int32

 dynamicObject = new CustomClass
 {
    IntAttribute = 420691337,
    StringAttribute = "I am a System.String"
 };
 Console.WriteLine(dynamicObject.GetType()); //YourApplicationNamespace.CustomClass

Dynami c type can быть полезным, особенно если вы десериализуете объект, полученный из вызовов API, например, потому что вы можете использовать имена ожидаемых атрибутов для доступа к значению. .CSharp, похоже, это не относится к. NET Core.

0 голосов
/ 27 мая 2020

На самом деле это зависит от контекста, в котором вы работаете ...

Если список может содержать сразу несколько типов, вы можете использовать

List<object>

как что угодно в C# наследуется от класса объекта. Но будьте осторожны, так как вы не будете знать, что это за тип, и вам придется выполнить проверки для этого.

Если список всегда содержит один и тот же тип данных, вы можете использовать обобщенные типы:

public class EmailObjects<TtoReplace, ThtmlBody>
{
    [...]

    public List<TtoReplace> lstOfValueToReplace { get; set; }**

    public string HTMLbody { get; set; }

    public List<ThtmlBody>  lsthtmlBody { get; set; }**
}

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

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