Я декомпилировал исполняемый файл приложения, чтобы узнать, как они обрабатывают команду. Но я не знаю точно, какой тип следующего файла. Потому что файл наследуется от суперкласса, который наследуется от system.windows.forms.component, но также этот файл имеет файл ресурсов (ExploreCommand.Resx) в отражателе.
[DesignerCategory("Accurate Command Binders"), ToolboxItem(true), DesignTimeVisible(true)]
internal class ExplorerCommands : CommandBinder
{
// Fields
private static readonly ResourceManager resources = new ResourceManager(typeof(ExplorerCommands));
// Methods
protected ExplorerCommands()
{
}
public ExplorerCommands(Control control) : base(control)
{
}
// Properties
[Browsable(false)]
public Command AboutAccurate {
get
{
return base.GetCommandForCaller("AboutAccurate ", "CitraKarya.Bisnis.Akunting.UI.Explorer.AboutAccurate ", "");
}
}
На каждой форме, использующей этот класс, они объявлялись так:
this.reportCommands = new CitraKarya.Akunitng.UI.ReportCommands (this);
но я не знаю, как создавался командный класс. У них есть синтаксис, отличный от класса ресурса. Кто-нибудь может мне помочь?
Что это значит? И как реализован этот случай?
Ух ... а это базовый класс для exploreCommand:
КОД:
[DesignerCategory(""), DesignTimeVisible(false), Designer(typeof(CommandBinderDesigner), typeof(IDesigner)), ProvideProperty("Command", typeof(object)), TypeConverter(typeof(CommandBinderTypeConverter)), ToolboxItem(false)]
public abstract class CommandBinder : Component
{
// Methods
protected CommandBinder()
{
this.commands = new Dictionary<object, Command>();
this.InitializeComponent();
}
protected CommandBinder(Control parentControl)
{
this.commands = new Dictionary<object, Command>();
this.parentControl = parentControl;
IComponent component = parentControl;
if ((component.Site != null) && (component.Site.Container != null))
{
component.Site.Container.Add(this);
}
this.InitializeComponent();
}
protected Command GetCommandForCaller(string propertyName, string id, string category)
{
CommandManager commandManager = CommandManager;
Command command = null;
if (commandManager != null)
{
command = commandManager.Commands[id];
}
if (command == null)
{
command = CreateCommand(propertyName, id, category);
if (commandManager != null)
{
commandManager.Commands.Add(command);
return command;
}
CommandsToBeAdded.Add(command);
}
return command;
}
}