【问题标题】:Set type to variable from method with parameter of variable type使用变量类型的参数从方法将类型设置为变量
【发布时间】:2018-11-22 22:56:00
【问题描述】:

基本上,我有一个带有一组属性的类 Text。

我想用其他类的属性填充这些。

我可以使用方法重载,但由于我基本上多次执行完全相同的操作,因此使用一种方法执行此操作似乎更简洁。

我有什么和工作:

private Text SetText(Book book)
{
 return new Text{
  Media = book.GetType().ToString();
  Pages = book.Pages,
  Words = book.Words,
}
private Text SetText(Letter letter)
{
 return new Text{
  Media = letter.GetType().ToString();
  Pages = letter.Pages,
  Words = letter.Words,
}

现在有办法 a) 有 1 种适用于 Book 和 Letter 的方法 b) 自动填写 Pages 和 Words,记住 Letter 和 Book 还有其他属性。

类似

private Text SetText<T>(T data)
{
 return new Text
  {
   Media = data.GetType().ToString(),
   Pages = data.Pages,
   Words = data.Words,
  }
}

如果问题 a 能得到解答,那对我有很大帮助。

如果问题 b 能得到回答,那将是一个不错的奖励。

【问题讨论】:

    标签: generics methods dynamic parameters properties


    【解决方案1】:

    需要的是“动态”类型。

    private Text GetText(object data)
        {
         dynamic objectData = Convert.ChangeType(data, data.GetType());
         return new Text
          {
           Media = objectData.GetType().Name,
           Pages = objectData.Pages,
           Words = objectData.Words,
          }
        }
    

    这是可行的,因为它只在运行时运行,因此允许动态输入。

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多