我有这样的扩展方法:如何避免指定类型参数
public static void PublishOnClient<THub, T>(this IObservable<T> observable, Expression<Func<THub, dynamic>> expression) where THub : Hub, new()
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
{
throw new ArgumentException("'expression' should be a member expression");
}
observable.Subscribe(x => Console.WriteLine(memberExpression.Member.Name));
}
我用它这样的:
Observable.Interval(TimeSpan.FromSeconds(2))
.PublishOnClient<TicketHub, long>(x => x.SomeValue);
但我宁可喜欢用它,而无需指定这样的T:
Observable.Interval(TimeSpan.FromSeconds(2))
.PublishOnClient<TicketHub>(x => x.SomeValue);
我根本不在乎T。我想要的只是提供一个THUB类型安全的方式来获取成员属性的字符串。不过,我希望扩展方法在IObservable上可用。我怎么能这样做?
http://blog.slaks.net/2010/12/partial价格-type-inference-in-net.html – SLaks 2012-03-02 22:51:33