[英]Accepting generic data type into a class constructor list
我想接受列表中的任何类型的数据,请帮忙。 请参阅**中的以下方法和 class 方法。
public void SendEmail(字符串发件人,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; }**
}
这实际上取决于您工作的环境......
如果列表可以同时包含多种类型,则可以使用
List<object>
正如 C# 中的任何内容都继承自 object class。 但要小心,因为您不知道类型是什么,您必须对此进行检查。
如果列表始终包含相同的数据类型,则可以使用 generics:
public class EmailObjects<TtoReplace, ThtmlBody>
{
[...]
public List<TtoReplace> lstOfValueToReplace { get; set; }**
public string HTMLbody { get; set; }
public List<ThtmlBody> lsthtmlBody { get; set; }**
}
但这将暗示此 class 的调用者知道哪些类型将包含在您的列表中。
Martin Verjans 的答案似乎是最简单的方法,但也许你可以使用
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
动态类型可能很有用,特别是如果您要反序列化从 API 调用中检索到的 object,例如,因为您可以使用预期的属性名称来访问该值。
var contacts = JsonConvert.DeserializeObject<dynamic>(contactsResponse.Content);
if (contacts.totalElements > 0) {
// Do stuff
}
如果您的目标是 .NET 框架,则需要参考 Microsoft.CSharp,.NET Core 似乎并非如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.