Этот вопрос, возможно, уже задавался, но я не знаю правильный вопрос, чтобы задать, чтобы найти ответ.
Я пытаюсь создать набор классов (тегов), которые содержат значение и позволяют другим компонентам получать доступ к значению.
Значение равно generi c, что позволит вам создать тег любого типа. Однако мне нужно иметь возможность хранить теги в списке или другой структуре данных, чтобы компонент имел несколько тегов разных типов.
public abstract class BaseTag
{
protected object _value;
public ushort DataQuality { get; protected set; }
public virtual object Value => _value;
public abstract void SetValue(object value, ushort dataQuality = 0);
}
public class Tag<T> : BaseTag
{
public new T Value
{
get => (T)_value;
private set
{
_value = value;
}
}
public override void SetValue(object value, ushort dataQuality = 0)
{
Monitor.Enter(_tagSync);
try
{
//If value or quality haven't changed, then do nothing
if (EqualityComparer<T>.Default.Equals((T)_value, (T)value) && dataQuality == DataQuality)
return;
DataQuality = dataQuality;
Value = (T)value;
}
finally
{
Monitor.Exit(_tagSync);
}
}
}
Я даже не знаю, задаю ли я еще правильный вопрос.
Может ли кто-нибудь помочь
Как получить возможность иметь список теги; tags [0] .Value <- хотел бы, чтобы это вызывало дочернее значение, но это не так, он возвращает basetag._value, но объекта типа, а не типа </p>
Есть ли более простой способ чтобы это произошло?