c# - 可以返回不同类型的通用方法

标签 c# .net generics

我有一个基础抽象类,它允许实现者返回不同的类型:

protected abstract T GetMyValue<T>();

我希望实现类能够做这样的事情:

T myResult;    
public override T GetMyValue<T>()
{

     return _myResult;
}

我希望调用者指定类型:

int i = obj.GetMyValue<int>();

这可能吗?

最佳答案

像对象扩展?

public static class ObjectExtension
{
    public static T GetValue<T>(this object obj)
    {
        var converter = TypeDescriptor.GetConverter(typeof(T));

        if (converter == null)
            return default(T);

        return (T)converter.ConvertFrom(obj);
    }
}

关于c# - 可以返回不同类型的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211123/

相关文章:

javascript - 从 JavaScript POST 重新加载 Razor 页面

c# - WPF 样式不适用于运行时(但适用于设计器)

c# - 特定子类型不需要工厂 CreateInstance 参数方法

c# - .net dll 是否有像 c++ dll 中的 dll 那样的入口点

swift - 使用关联类型的 Swift 中的协议(protocol)一致性问题

c# - 如何在 C# 中制作 Observable Hashset?

c# - 以编程方式修改文件内容

.net - 我可以在 Mono/Linux 上使用 Visual Studio 附带的 FSharp.Core 吗

typescript - 仅接受数组值键(并推导返回类型)的函数

c# - C# 中的泛型,使用变量类型作为参数