繁体   English   中英

我可以将 static class 分配给变量吗?

[英]Can I assign a static class to a variable?

我的问题是我是否可以将 static class 分配给另一个变量(以及那将是什么类型)?

说我有

public static class AClassWithALongNameIDontWantTotType{
    public static bool methodA() { stuff }
}

然后我有

class B{

}

我可以这样做,以便在class B内部我可以将此 class 重新分配给名称较短的名称,例如:

SomeType a = AClassWithALongNameIDontWantTotType

然后能够做到

a.methodA()

?

我可以通过执行类似的操作来获取 function

Func<bool> a = AClassWithALongNameIDontWantTotType.methodA() 

但我更愿意拥有整个 class。

谢谢!

如果您想要这样做纯粹是为了避免输入长名称,您可以使用别名

using a = SomeNamespace.AClassWithALongNameIDontWantToType;

不,你不能,因为你不能拥有 static class 的实例。 您可以通过反射或动态来完成您正在寻找的东西。 为此,我创建了一个DynamicObject来帮助:

class StaticMethodProvider : DynamicObject
{
    private Type ToWorkWith { get; set; }

    public StaticMethodProvider(Type toWorkWith)
    {
        ToWorkWith = toWorkWith;
    }

    public override bool TryInvokeMember(InvokeMemberBinder binder, 
        object[] args, out object result)
    {
        result = ToWorkWith.InvokeMember(binder.Name, BindingFlags.InvokeMethod, 
            null, null, null);
        return true;
    }
}

然后你就可以做

dynamic a = new StaticMethodProvider(
    typeof(AClassWithALongNameIDontWantTotType));
Console.WriteLine(a.methodA());

但是那样你就不会有智能感知和编译时安全性。 这可能有点矫枉过正。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM