C# 如何使方法返回泛型类型?
我有一个名为config的类,其中一个字符串字段名为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)
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?请给出一个使用示例?可能重复的