如何在C#中获取泛型以返回值?

时间:2011-12-20 05:50:08

标签: c# generics

我已经使用以下通用来添加或更新记录:

    public void AddOrUpdate<T, V>(T item, V repo)
        where T : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
        where V : IAzureTable<T>
    {
        try
        {
            repo.AddOrUpdate(item);
        }
        catch (Exception ex)
        {
            _ex.Errors.Add("", "Error when adding");
            throw _ex;
        }
    }

我需要的是一个类似的通用版本,它允许我检索记录并将其作为通用实现:

public Account GetAccount(string pk, string rk)
        {
            var account = _accountRepository.GetPkRk(pk, rk);
            if (account == null)
            {
                _ex.Errors.Add("", "Account " + rk + " does not exist");
                throw _ex;
            }
            return account;
        }

有人可以解释我如何制作一个返回类T实例的泛型。我不熟悉如何使泛型返回值。我想我可以编写通用代码,但我不确定如何返回值。

2 个答案:

答案 0 :(得分:1)

public T methodname<T>()
{
  return TypeTobject;
}

您还可以查看此问题:Generic Method Return Type Casting Problem

答案 1 :(得分:1)

public T GetClassT<T>()
{
    // do your processing here
    var someObject = DoSomeProcessHere();

    // ensure that your return object is of type T
    return (T)someObject;
}