我有一个扩展方法,像这样的:如何绕过指定通用参数类型的需要?
public static void ImplementsAttribute<TX, TY>(this Expression<Func<TY>> expression)
where TX : Coupling.PropertiesMergerAttribute
{
var memberExpression = expression.Body as MemberExpression;
var name = MetaHelper.GetPropertyName(expression);
var property = memberExpression.Expression.Type.GetProperty(name);
var attributes = property.GetCustomAttributes(true);
Assert.IsTrue(attributes.Any(a => a is TX));
}
其实我可以用我的代码是这样的:
Expression<Func<String>> nameProperty =() => new ImprovisedExplosiveXML().Name;
nameProperty.ImplementsAttribute<Coupling.UnresolvablePropertiesMergerAttribute, String>();
,但我想并不需要指定第二个泛型参数类型:
Expression<Func<String>> nameProperty =() => new ImprovisedExplosiveXML().Name;
nameProperty.ImplementsAttribute<Coupling.UnresolvablePropertiesMergerAttribute>();
有没有办法在C#3.5中做到这一点?
根据您所提供的代码,我可以看到你需要将TY作为模板参数或将参数传递给您的扩展方法。 – ioWint