Это по умолчанию невозможно. Однако, если вам известно имя метода, который вы хотите вызвать, и вы уверены, что каждый тип LinkedItem
будет содержать этот метод, вы можете использовать рефлексию для достижения своей цели. Примечание. Зачастую для решения общих задач программирования лучше использовать рефлексию.
Следующее всегда будет выводить true
для DoSomething
. Он вызывает статический член, который всегда доступен (я удалил ваше ограничение универсального типа, поскольку это не важно для статических методов).
public class MyList<LinkedItem> : List<LinkedItem>
{
public bool DoSomething()
{
Type t = typeof(LinkedItem);
object o = new Object();
var result = t.InvokeMember("ReferenceEquals",
BindingFlags.InvokeMethod |
BindingFlags.Public |
BindingFlags.Static,
null,
null, new[] { o, o });
return (result as bool?).Value;
}
}
// call it like this:
MyList<string> ml = new MyList<string>();
bool value = ml.DoSomething(); // true
PS: между тем, пока я печатал это, другие, похоже, предлагают такой же подход; -)