C# 我可以给变量分配一个静态类吗?
我的问题是,我是否可以将一个静态类分配给另一个变量(这是什么类型的变量) 说我有C# 我可以给变量分配一个静态类吗?,c#,C#,我的问题是,我是否可以将一个静态类分配给另一个变量(这是什么类型的变量) 说我有 public static class AClassWithALongNameIDontWantTotType{ public static bool methodA() { stuff } } 然后我有 class B{ } 我是否可以在类B中将该类重新分配给名称较短的对象,例如: SomeType a = AClassWithALongNameIDontWantTotType 然后才能做到 a.
public static class AClassWithALongNameIDontWantTotType{
public static bool methodA() { stuff }
}
然后我有
class B{
}
我是否可以在类B中
将该类重新分配给名称较短的对象,例如:
SomeType a = AClassWithALongNameIDontWantTotType
然后才能做到
a.methodA()
dynamic a = new StaticMethodProvider(
typeof(AClassWithALongNameIDontWantTotType));
Console.WriteLine(a.methodA());
?
我可以通过这样做得到一个函数
Func<bool> a = AClassWithALongNameIDontWantTotType.methodA()
Func a=AClassWithALongNameIDontWantTotType.methodA()
但是我更喜欢整节课
谢谢 不,您不能,因为您不能有静态类的实例。您可以通过反射或动态来完成您想要的。为此,我创建了一个
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;
}
}
然后你就可以
a.methodA()
dynamic a = new StaticMethodProvider(
typeof(AClassWithALongNameIDontWantTotType));
Console.WriteLine(a.methodA());
但这样你就不会有智能感知和编译时安全。这可能有点过头了。如果您希望这样做纯粹是为了避免键入长名称,那么可以使用别名
using a = SomeNamespace.AClassWithALongNameIDontWantToType;
如果使用intellisense,则不必键入全名,只需键入开头,然后键入tab;)。是的,我正在使用它,但我仍然喜欢当我的代码中没有长名称时,如果有任何方法可以缩短它:P看起来更干净!谢谢正是我想要的:P