OmniAudit мог бы быть хорошим решением для Вас, нуждаются. Я никогда не использовал его прежде, потому что я - довольно счастливая запись моих собственных контрольных стандартных программ, но это звучит хорошим.
Ближайшее, что вы можете сделать (за исключением подхода с базовым интерфейсом), - это «, где T: class
», что означает ссылочный тип. Не существует синтаксиса для обозначения «любого интерфейса».
Это (« где T: class
») используется, например, в WCF для ограничения клиентов контрактами на обслуживание (интерфейсами).
Нет, на самом деле, если вы думаете class
и struct
mean class
es и struct
s, ты не прав. class
означает любой ссылочный тип (например, включает также интерфейсы), а struct
означает любой тип значения (например, struct
,
Вы не можете сделать это ни в одной выпущенной версии C #, ни в грядущей версии C # 4.0. Это также не ограничение C # - в самой среде CLR нет ограничения «интерфейса».