【问题标题】:C# - Passing the object type in a method parameterC# - 在方法参数中传递对象类型
【发布时间】:2011-07-27 12:21:39
【问题描述】:

我正在尝试将对象类型传递给方法。我正在为其他存储库继承的 CRUDRepository 执行此操作,但我不知道如何知道我正在处理的类型。

例如:

    public PageOf<Entity> GetPageOfEntity(int pageNumber, int pageSize)
    {
    // Here i need to work with the entity type to make calls to database  
    }

Entity 是由其他实体(用户、产品等)继承的对象,此方法返回分页结果。我这样做是为了避免为我拥有的每个实体创建一个 GetPageOf 方法。

将要在分页结果中处理的对象类型传递给方法的正确方法是什么?

编辑:

这是一个实体的例子

     public abstract class Entity 
     {
     public virtual long Id { get; set; }
     public virtual DateTime Created { get; set; }
     }

还有用户对象:

     public class User : Entity
     {
     public string FirstName { get; set; }
     }

当我试图编写一个类来处理一些杂乱的操作时,我需要在方法中知道我正在使用什么对象(但我现在正试图为每种对象类型创建一个方法)

谢谢

【问题讨论】:

  • 多一点代码和细节会有所帮助。您是否正在寻找传递类型?可能你可以有一个T 类型的入站参数,然后可能实例化并在实例上执行 GetType() 以检查它是什么类型并构建该类型的 pageOf 并返回。
  • 我认为他要问的是如何将 T 解析回数据上下文中的表..
  • 不是真的,我以前问过这个。检查日期。

标签: c# inheritance


【解决方案1】:

使方法通用:

public PageOf<TEntity> GetPageOfEntity<TEntity>(int pageNumber, int pageSize)
    where TEntity : Entity
{
    Type entityType = typeof(TEntity);
    ...
}

【讨论】:

  • 谢谢伙计。我将阅读泛型方法和类以了解其工作原理。
  • 你不需要TEntity 类型的参数来获取页面吗?
  • @Phil:不,但在这种情况下你不能使用类型推断。只要您明确指定类型参数,就可以了。
【解决方案2】:

我不确定,我正确理解了你的问题,但你不能只使用泛型参数吗?

public PageOf<Entity> GetPageOfEntity<TEntity>(int pageNumber, int pageSize) 
    where TEntity : Entity
{
// Here i need to work with the entity type to make calls to database  
}

【讨论】:

  • 很抱歉,我的英语不是很完美(我是葡萄牙语),有时我真的无法表达自己!但是,是的,通用参数是我需要的。谢谢;)
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 2022-01-22
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 2013-05-05
  • 1970-01-01
相关资源
最近更新 更多