Member 10235493 Ответов: 1

Поток для доступа к свойству из одного класса в другой класс


пространство имен Samba.Модули.MenuModule
{
[Экспорт, PartCreationPolicy(CreationPolicy.Неразделенный)]
открытый класс MenuItemViewModel : EntityViewModelBase, IEntityCreator
{
частная чтения IMenuService _menuService;

[Importingconstructor в]
public MenuItemViewModel(IMenuService menuService)
{
AddPortionCommand = new CaptionCommand(string.Формат(Ресурсы.Add_f, Ресурсы.Часть), OnAddPortion);
DeletePortionCommand = новая команда captioncommand(строка.Формат(Ресурсы.Delete_f, Ресурсы.Часть), OnDeletePortion, CanDeletePortion);
_menuService = menuService;
}
публичный строковый штрих-код
{
get { return Model.Штрих-код ?? ""; }
set { модель.Штрих-код = значение; }
}


====> Я должен получить доступ к этому штрих-коду в моем классе.
мой класс-это

пространство имен Samba.Презентация.Общий.ModelBase
{
публичный абстрактный класс EntityViewModelBase : VisibleViewModelBase, где TModel : class, IEntityClass
{
частный bool _modelSaved;
частная IValidator _validator;

защищенная EntityViewModelBase()
{
SaveCommand = новая команда Captioncommand(ресурсы.Сохранить, OnSave, CanSave);
}

[Просматриваемый(false)]
модель общественной структуры tmodel { получить; набор; }

[Просматриваемый(false)]
public ICaptionCommand SaveCommand { get; private set; }
защищенная виртуальная пустота OnSave(строковое значение)
{
если (CanSave())
{
строка штрих-кода = "192.0.0.1";
//проверьте, является ли IP дубликатом или нет
string constring = LocalSettings.ConnectionString + ";начальный каталог=sTMS 3;";
SqlConnection con = новый SqlConnection();
против.ConnectionString = сужение;
Sqlcommand, который check_Item = новая команда sqlcommand("выбрать количество(*) из меню где (штрих ='" + штрихкод + "')", кон);
против.Открыть();
int UserExist = (int)check_Item.Executescalar так();

if (UserExist > 0)
{
Ящик для сообщений.Show("IP уже exsit.Пожалуйста, попробуйте еще раз", ресурсы.CantSave);
Сообщение об ошибке = "";
}
еще
{
_modelSaved = истина;
если (модель.Id == 0)
{
этот.PublishEvent(EventTopicNames.AddedModelSaved);
}
этот.PublishEvent(EventTopicNames.ModelAddedOrDeleted);
((VisibleViewModelBase)это).PublishEvent(EventTopicNames.ViewClosed);
}
против.Закрывать();

}

Что я уже пробовал:

я перепробовал много решений n=но поскольку это не общий класс m застрял

1 Ответов

Рейтинг:
0

OriginalGriff

Поскольку ваше свойство Barcode нестатично, вам нужен экземпляр класса MenuModule, чтобы получить это значение, так как каждый экземпляр будет иметь другое значение. Вы создаете экземпляр с помощью new ключевое слово.

Экземпляр подобен автомобилю - у вас может быть класс автомобилей, и все четырехколесные транспортные средства являются экземплярами автомобилей. В реальном мире вы уже знаете это: "эта машина" - это другое транспортное средство, чем "та машина"; "моя машина" - это другой цвет, чем "ваша машина". Каждый автомобиль является отдельным экземпляром класса автомобилей и создается, покупается, продается и управляется независимо от всех остальных.

Классы в компьютерах одинаковы: вы можете иметь несколько экземпляров вашего класса MenuModule, и каждый из них будет иметь отдельное значение свойства Barcode. Поэтому вам нужно точно указать, на какой экземпляр класса вы пытаетесь ссылаться, вот и все:

MenuModule mm = new MenuModule();
...
Console.WriteLine(mm.Barcode);


Member 10235493

брат, я знаю эту концепцию, но экземпляр Menumodule не создается, потому что этот модуль имеет [Export, PartCreationPolicy(CreationPolicy.NonShared)].см. верхнюю часть класса manuModule.
Menumodule не работает.