C# 泛型参数将由getter决定

C# 泛型参数将由getter决定,c#,.net,generics,C#,.net,Generics,有没有办法做到这一点: public interface ISomething { Type e { get; } Expression<Func<e, long>> GetExpression(); //COMPILE ERROR } 我得到了编译错误:e是属性,但像类型一样使用 我希望泛型参数将由getter决定-可能吗?这应该可以做到,尽管我不太了解e属性的用途 public interface ISomething<T>

有没有办法做到这一点:

public interface ISomething {
        Type e { get; }
        Expression<Func<e, long>> GetExpression(); //COMPILE ERROR
}
我得到了编译错误:e是属性,但像类型一样使用


我希望泛型参数将由getter决定-可能吗?

这应该可以做到,尽管我不太了解e属性的用途

public interface ISomething<T> 
{
    T SomeProperty { get; }
    Expression<Func<T, long>> GetExpression();
}
如果要使ISomething保持非泛型,则只能将GetExpression设置为泛型:


你所说的泛型参数将由getter决定是什么意思?@BoltClock:在上面的示例中,Expression GetExpression;标记为编译错误。您必须使用反射。是否有方法防止公共接口中的泛型问题?e属性应该定义泛型类型。@Naor:不,没有。泛型类型是在编译时确定的,而不是在运行时确定的。有什么方法可以防止泛型在公共接口中出现?
 public interface ISomething<T> {
 {
         Expression<Func<T, long>> GetExpression();
 }
public interface ISomething 
{
     Expression<Func<T, long>> GetExpression<T>();
}