C# 如何使方法返回泛型类型?

C# 如何使方法返回泛型类型?,c#,.net,generics,C#,.net,Generics,我有一个名为config的类,其中一个字符串字段名为key 应用类的GET属性时,该属性必须返回一个不同类型(Int、bool或String)的变量键 我的实施如下: public enum RetType {RetInt, RetBool, RetString}; ... public object PolimorphProperty(string key, RetType how) { get { switch (how)

我有一个名为config的类,其中一个字符串字段名为
key

应用类的GET属性时,该属性必须返回一个不同类型(Int、bool或String)的变量键

我的实施如下:

  public enum RetType {RetInt, RetBool, RetString};
  ...
  public object PolimorphProperty(string key, RetType how) 
  {
      get 
     { 
        switch (how)
        {
         case RetType.RetInt:
           ...;
        case RetType.RetBool:
           ...;
        case RetType.RetString:
           ...;
        }
     }  
 }
但是PolimorphProperty返回对象类型的问题

我应该在代码中更改什么以获得适当的类型(int、bool、string),而不是对象?

public T属性(string key、T how)
public T PolimorphProperty<T>(string key, T how)
{
    //todo
}
{ //待办事项 } C#中的任何
类型实际上是一个对象。
根据我对您的问题的理解,您可以这样称呼您的方法:
PolimorpthProperty(key,RetType.SomeType)

该方法返回一个对象。您应该这样使用它:
int key=(int)polimothproperty(key,RetType.RetInt)

这被称为

如何,考虑到你最初的“PoimOfProjyProject”的实现仍然是你的项目,你添加了这个:

public TType PolimorphProperty<TType>(string key, RetType how) 
 {
     return (TType)PolimorphProperty(key, how);
 }
public TType属性(字符串键,RetType how)
{
return(TType)属性(key,how);
}
执行以下操作:

public T PolimorphProperty<T>(string key)
{
    return (T) objectInstanceHere;
}
public属性(字符串键)
{
返回(T)objectInstanceHere;
}
用法示例:

int i = PolimorphProperty<int>("somekey");
inti=PolimorphProperty(“somekey”);
这支持了


尽可能避免在多态代码中切换
如果

如果我理解正确,您正在寻找类似以下内容:

public T GenericMethod<T>(string key)
{
    var ret = new object(); // Retrieve object from whatever...
    return (T) ret;
}

public void UsageExample()
{
    int typedResult = GenericMethod<int>("myKey");
}
public T GenericMethod(字符串键)
{
var ret=new object();//从任何对象检索对象。。。
返回(T)ret;
}
public void UsageExample()
{
int-typedResult=GenericMethod(“myKey”);
}
如果您试图基于类型T以不同的逻辑获取不同的对象,那么无论如何您都必须打开类型,因为除非您的集合支持特定类型的对象(它们通常支持),否则编译器不知道该做什么。

在这种情况下,请检查此项。

在这种情况下,第二个参数可以不受影响地删除。这很明显,但您仍然没有删除它。请注意,您不能让编译器确保
t
int
bool
string
。如果不是其中之一,您最多可以抛出一个异常。尽管如此,我认为签名
public T PolimorphProperty(字符串键)
可能是解决您问题的最佳方法。@burning\u LEGION您打算如何调用PolimorphProperty?请给出一个使用示例?可能重复的