C#类型转换,应如何在泛型中实现?

时间:2018-10-07 17:31:31

标签: c# generics casting

我想将一些文本文件转换为我的代码实体。

这些文件包含实体信息,例如,一个包含客户信息,一个包含订单信息,另一个包含供应商信息。

我已经实现了将实体类型转换为实体类的字符串。

由于读取文本文件并将每一行转换为字符串是不同实体的常见任务,因此我使用了通用类来读取文本文件并将其转换为实体。

public class TextToEntity<TEntity> 
{
    private string _txtfile { get; set; }
    public TextToEntity(string TextFile)
    {
        _txtfile = TextFile;
    }

    public List<TEntity> ReadText()
    {
        return File.ReadAllLines(_txtfile).Select(c =>
        {
            return (TEntity)c;
        }).ToList();
    }
} 

线

return (TEntity)c

导致错误

  

无法将字符串转换为TEntity

我知道我应该给TextToEntity一个约束,例如:

public class TextToEntity<TEntity> where TEntity:Customer,Supplier,Order

但这不是真正的语法,真正的形式是什么?

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我认为您的设计非常糟糕...无论如何,这是一个简单的“ hack”:

public List<TEntity> ReadText()
{
    return File.ReadAllLines(_txtfile).Select(c =>
    {
        var method = typeof(TEntity).GetMethod("op_Explicit", new[] { typeof(string) });

        return (TEntity) method.Invoke(null, new[] { c });

    }).ToList ();
}