Вы не должны приводить key
к IKey
перед установкой значения. Он уже наследует этот тип, и вы маскируете свойство Value
, установленное в Key
. Кроме того, это тот случай, когда я предпочитаю использовать строгую типизацию вместо слабой, используя var
. Смотрите ниже:
Консольная программа
namespace Console
{
interface IKey
{
int Value { get; set; }
}
public struct Key : IKey
{
public int Value { get; set; }
}
class Program
{
static void Main()
{
var key = new Key();
((IKey)key).Value = 9;
var secondKey = new Key();
secondKey.Value = 9;
var thirdKey = new Key();
thirdKey.Value = 9;
System.Console.WriteLine($"key = {((IKey)key).Value}");
System.Console.WriteLine($"secondKey = {((IKey)secondKey).Value}");
System.Console.WriteLine($"thirdKey = {thirdKey.Value}");
System.Console.ReadLine();
}
}
}
выход
key = 0
secondKey = 9
thirdKey = 9