我在命名空间 Classes.Device 中有一个名为 NetworkDevice 的类和一个方法:
private void DisplayDeviceDetails<T>(T device)
{
throw new NotImplementedException();
}
如果我做对了,我可以像这样限制 T 的类型:
private void DisplayDeviceDetails<T>(T device) where T : Classes.Device.NetworkDevice
{
throw new NotImplementedException();
}
因为我将来可能会添加其他设备,所以我想知道是否有一种方法可以将此行为扩展到命名空间 Classes.Devices,例如“where T : Classes.Devices”? 或者创建一个基类“设备”是正确的方法吗?
除了删除约束并通过
检查方法本身之外,我找不到其他任何东西object.OriginElement.GetType().Namespace
其他信息为5岁以上。
谢谢大家!
您可以在
Classes.Devices
命名空间中创建基类 DeviceBase:
namespace Classes.Devices
{
public abstract class DeviceBase
{
// Codes...
}
}
然后,修改您的方法以仅接受从
DeviceBase
派生的类型:
private void DisplayDeviceDetails<T>(T device) where T : Classes.Devices.DeviceBase
{
throw new NotImplementedException();
}
这样,Classes.Devices 命名空间中继承自 DeviceBase 的任何类都可以传递给 DisplayDeviceDetails 方法。