gpt4 book ai didi

c# - 有没有办法从扩展方法中获取通用类型?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:36 29 4
gpt4 key购买 nike

考虑这个方法:

public static TResult CastTo<T, TResult>(this T arg)
{
TypeConverter typeConverter = TypeDescriptor.GetConverter(typeof(T));
bool? converter = typeConverter?.CanConvertTo(typeof(TResult));
if (converter != null && converter == true)
return (TResult)typeConverter.ConvertTo(arg, typeof(TResult));
else
return default(TResult);
}

有没有办法从扩展方法中设置通用类型,我的意思是,而不是调用:

 string s = "1";
s.CastTo<string, int>();

直接从调用类获取输入类型的东西。我是 C# 的新手,我想知道这个问题。

最佳答案

当你的泛型方法什么都不返回时,你可以省略类型:

public static void CastTo<T, TResult>(this T arg, out TResult var)
{
TypeConverter typeConverter = TypeDescriptor.GetConverter(typeof(T));
bool? converter = typeConverter?.CanConvertTo(typeof(TResult));
if (converter != null && converter == true)
var = (TResult)typeConverter.ConvertTo(arg, typeof(TResult));
else
var = default(TResult);
}

然后你像这样使用它:

string s = "1";
int i;
s.CastTo(out i);

它将知道基本类型和输出类型,而无需明确命名它们。

关于c# - 有没有办法从扩展方法中获取通用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35261958/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com