C# 如何访问继承到内部类的抽象类属性
假设我有一个从抽象类派生的内部类“B”,例如C# 如何访问继承到内部类的抽象类属性,c#,C#,假设我有一个从抽象类派生的内部类“B”,例如 abstract class A { private int _abc; public int abc { get{return _int;} set{_abc=value;} } } internal class B:A { } 我需要不同组件中的abc,我可以访问它吗???请帮帮我 如果出于某种原因需要对其进行内部安全保护,可以通过几种方式从外部代码进行访问 1) 您可以使用授予访问
abstract class A
{
private int _abc;
public int abc
{
get{return _int;}
set{_abc=value;}
}
}
internal class B:A
{
}
我需要不同组件中的abc,我可以访问它吗???请帮帮我 如果出于某种原因需要对其进行内部安全保护,可以通过几种方式从外部代码进行访问 1) 您可以使用授予访问友好程序集内部构件的权限
[assembly:InternalVisibleTo("Test.dll")]
2) 您可以使用访问对象的成员
object obj = <instance of your internal type>;
var value = obj.GetType().GetProperty("abc").GetValue(obj);
外部代码可以通过使用接口访问属性
var accessor = (IAbcAccessor)<instance of your internal type>;
var value = accessor.abc;
var访问器=(IAbcAccessor);
var值=accessor.abc;
在声明B的程序集之外,无法创建B的实例或将任何对象声明为B类型。例如
B b = whatever
或
不允许在声明B的程序集之外
但是,如果您有一个公共方法
public class C
{
public static A MakeAB()
{
return new B();
}
}
在声明了B的程序集中,use可以说
A a = C.MakeABe()
在任何程序集中,由于C.MakeAB()的调用者不需要知道类型B。请不要在问题标题中包含有关语言的信息,除非没有它就没有意义。标签就是为了这个目的。
public class C
{
public static A MakeAB()
{
return new B();
}
}
A a = C.MakeABe()