动态调用 C# 泛型方法
C# 中的一个常见挑战涉及调用泛型方法,其中类型参数直到运行时才知道。 编译器无法在编译时解析类型会导致错误。
虽然 C# 中首选编译时类型安全,但反射为需要运行时类型确定的情况提供了解决方案:
<code class="language-csharp">MethodInfo method = GetType().GetMethod("DoesEntityExist") .MakeGenericMethod(new Type[] { t }); method.Invoke(this, new object[] { entityGuid, transaction });</code>
这使用反射动态调用泛型方法DoesEntityExist
,替换运行时类型t
。 然而,反射会增加复杂性并对性能产生负面影响。
更高效且类型安全的方法是重构代码。 不要依赖反射,而是考虑使调用方法本身通用:
这将类型确定转移到更高的级别,避免了运行时反射的需要。
提供有关您的具体用例的更多详细信息将有助于提供更精确的指导。 在 C# 中,优先考虑编译时类型安全至关重要。如果需要反思,请重新评估您的设计,以便在开发过程的早期阶段可能合并泛型。
以上是如何访问具有动态确定类型的 C# 泛型方法?的详细内容。更多信息请关注PHP中文网其他相关文章!