C# 如何禁用从接口到实现接口的类的类型转换

C# 如何禁用从接口到实现接口的类的类型转换,c#,inheritance,interface,C#,Inheritance,Interface,如何禁用从接口IFoo到类栏的转换?有可能吗 组件一 组件二 我可以阻止Bar将secretFoo强制转换为type Bar,从而访问SecretValue的值吗?将Bar的基类从Foo更改为IFoo,将属性secretFoo从typeIFoo更改为Foo public class Bar : IFoo { private Foo secretFoo; public string Name { get { return

如何禁用从接口IFoo到类栏的转换?有可能吗

组件一

组件二


我可以阻止Bar将secretFoo强制转换为type Bar,从而访问SecretValue的值吗?

Bar
的基类从
Foo
更改为
IFoo
,将属性
secretFoo
从type
IFoo
更改为
Foo

public class Bar : IFoo
{
    private Foo secretFoo;
    public string Name {
        get
        {
            return secretFoo.Name;
        }
    }
}

SecretValue是公共栏,在任何情况下都可以访问SecretValue属性。我不明白你的问题你是说你想阻止从
IFoo
Foo
的转换,对吗?您无法访问
SecretValue
,即使您将其强制转换为
Bar
。您可以将其设置为
internal get
@Simonare。我会这样做,但是我需要在第三个程序集中输入SecretValue的值。我认为您不能这样做。甚至微软也有我们可以看到的内部程序集,但在他们的评论中,他们建议最终用户不要使用这些程序集。
public class Bar : Foo
{
   private IFoo secretFoo;
}
public class Bar : IFoo
{
    private Foo secretFoo;
    public string Name {
        get
        {
            return secretFoo.Name;
        }
    }
}