Я пытаюсь вытащить переменную из страницы Windows Forms, созданной в одном приложении, и передать ее в функцию AutoCAD C# .Net, которую я написал.Невозможно получить доступ к переменной из разных пространств имен в разработке плагинов AutoCAD
Я могу присвоить значение в TextBox
blockNameInput другой переменной. Мне нужно получить ту же информацию в AutoCAD, чтобы потом загрузить все блоки с этим именем.
У меня есть класс со свойствами для blockName, который я устанавливаю и получаю значение. Все это работает в одном пространстве имен. Когда я вызываю одну и ту же переменную в другом пространстве имен, я получаю значение по умолчанию «Старый» вместо значения, которое было введено в TextBox.
Возможно, я запускаю новый экземпляр BlockNameClass во втором пространстве имен, но я понятия не имею, какое решение может быть. Соответствующий код приведен ниже:
//THIS IS THE OUT OF PROCESS AUTOCAD SCRIPT
namespace AttributeSyncExternal
{
public partial class AttributeSyncForm : Form, IMessageFilter
{
public class BlockNameClass
{
public string blockName = "Old";
public string BlockName
{
get
{
return blockName;
}
set
{
blockName = value;
}
}
}
public static readonly BlockNameClass _class = new BlockNameClass();
public static BlockNameClass BlockNameClassInstance
{
get { return _class; }
}
private void runButton_Click(object sender, EventArgs e)
{
BlockNameClassInstance.BlockName = blockNameInput.Text;
//DO SOME OTHER STUFF HERE
}
}
}
using static AttributeSyncExternal.AttributeSyncForm;
//THIS IS THE IN PROCESS AUTOCAD SCRIPT
namespace AttributeSyncExternal.Attributesync
{
public class DumpAttributes
{
[CommandMethod("LISTATT")]
public void ListAttributes()
{
//DO SOME OTHER STUFF HERE
string blockName = BlockNameClassInstance.BlockName;
}
}
}
Я редактировал свой вопрос. Вы указываете «блоки» и «блок-имена», не определяя их, и это может не иметь отношения к проблеме, которую вы испытываете. Если вы считаете, что они актуальны, то вам следует вкратце объяснить, что они делают, чтобы те, кто не являются экспертами AutoCAD, также могут помочь решить вашу проблему. – Sabuncu
Спасибо за ввод, что блок не должен быть важен для ответа на вопрос. Проблема состоит в том, что я не могу создать экземпляр класса в одном пространстве имен, присваивать значение переменной и затем вызывать это значение в другом пространстве имен, не возвращая это значение по умолчанию. –
меняет значение BlockName на статические ошибки, и я не смог скомпилировать. Изменение общедоступного строкового блокаName = «Старый»; к публичной статической строке blockName = "old"; не имело никакого значения. –