通用接口所以,首先我有我的命令属性界面与方法指针
public interface ICommandProperty<T, U>
{
Func<T> CreateCommand { get; set; }
Func<T, U> ParseResponse { get; set; }
}
的想法是,我可以创建一个简单的解析器,需要一个字符串,并返回一个ip地址例如。
这个接口,然后在另一个接口用于:
public interface IDeviceCommand
{
Func<ICommandProperty<object, object>> SetCommand
{
get;
set;
}
Func<ICommandProperty<object, object>> GetCommand
{
get;
set;
}
string Name { get; set; }
}
我可能会对此都错了,但是这是我的问题。目前我有泛型接口声明与对象,因为我不知道一种方法来设置它们的一般(IDeviceCommand不能是通用的各种原因)。
我的具体实施看起来是这样的:
public class DeviceCommand:IDeviceCommand
{
public DeviceCommand(string name,Func<ICommandProperty<object,object>> Set,Func<ICommandProperty<object,object>> Get)
{
this.Name = name;
this.SetCommand = Set;
this.GetCommand = Get;
}
#region IDeviceCommand Members
public string Name
{
get;
set;
}
public object Value
{
get;
set;
}
public Func<ICommandProperty<object, object>> SetCommand
{
get;
set;
}
public Func<ICommandProperty<object, object>> GetCommand
{
get;
set;
}
#endregion
}
我可以做DeviceCommand是一个通用类,并用T,U的set命令和GetCommand,但后来它不满足IDeviceCommand接口,因为Func<ICommandProperty<T,U>> isn't Func<ICommandProperty<object,object>>
是否有不同的方法,我应该在这里使用。实质上,我试图创建一个方法指针,当我实例化DeviceCommand时,可以设置它。
科里,谢谢你的回应,你得到了我后肯定的jist。你说得对,主要问题是客户不一定知道需要的类型。所以,当我使用IDeviceCommand.GetCreateCommand()时,调用者不会知道T,U传递哪些类型。 –
BigTundra
2010-06-10 17:18:23