Я пытаюсь изменить тип свойства в классе реализации интерфейса, используя явную реализацию интерфейса.с использованием реализации явного интерфейса
interface ISample
{
object Value { get; set; }
}
class SampleA : ISample
{
SomeClass1 Value { get; set; }
object ISample.Value
{
get { return this.Value; }
set { this.Value = (SomeClass1)value; }
}
}
class SampleB : ISample
{
SomeClass2 Value { get; set; }
object ISample.Value
{
get { return this.Value; }
set { this.Value = (SomeClass2)value; }
}
}
class SomeClass1
{
string s1;
string s2;
}
Но когда мне нужно передать в интерфейсе OBJ в функции, я не могу получить доступ к объектам SomeClass1 или SomeClass2.
Для например:
public void MethodA(ISample sample)
{
string str = sample.Value.s1;//doesnt work.How can I access s1 using ISample??
}
Я не знаю, если это понятно, но я не могу показаться, чтобы получить более простой способ объяснить это. Есть ли способ получить доступ к свойствам SomeClass1 с помощью интерфейса ISample?
Благодаря
Второй пример не работает, так как 'SomeClass1' является типом свойства, а не типом' 'ISample'', а первый будет генерировать исключение, если' 'ISample'' 'SampleA' – ntziolis
, тогда используйте ограничения :) и I «Предполагая, что все публично, его код показывает, что он не является публичным. – payo
Я добавил некоторые проверки типа для ntziolis - я не показывал безопасный маршрут, я показывал, как бросать объекты. Понятно, что некоторый дизайн должен быть добавлен, чтобы сделать код более надежным. – payo