如何实现类似nameof的方法

很多时候,我们需要获取变量本身的名称,可以用nameof获取,例如,我们有一个类:
public class MyClass
{
public string Name { get; set; }
}
同时,我们写一个方法,进行业务处理,需要用变量本身的名称作为参数(仅仅是示例,不要纠结方法本身有没有意义):
private string Test(string text)
{
//测试用,直接返回
return text;
}
使用时,用下面的方法调用:
var str = Test(nameof(MyClass.Name));//str=“Name”;
这样用了nameof方法,显得有点啰嗦,尤其是频繁使用时很不方便(实际往往是和字符串组合,拼接起来后就不直观了),我希望采用类似的方法调用:
var str = Test(MyClass.Name);
也就是忽略nameof方法,直接传入MyClass.Name,请问,Test方法该怎么写?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以给你提供一个示例代码,实现在Revit中创建一个层叠的RibbonPanel并添加三个按钮,分别排列在上、中、下三个位置。 首先,你需要在Revit二次开发环境中创建一个类,包含一个静态方法实现添加三个按钮的功能。代码如下: ``` public static class RibbonExtensions { public static RibbonPanel CreateStackedButtons(this RibbonTab tab, string panelName, string panelTitle, string upButtonName, string midButtonName, string downButtonName) { // Create a new panel RibbonPanel panel = tab.GetPanel(panelName); if (panel == null) { panel = tab.AddItem(new RibbonPanel(panelName, panelTitle)); } // Create three push buttons PushButtonData upButtonData = new PushButtonData(upButtonName, "Up", Assembly.GetExecutingAssembly().Location, typeof(UpCommand).FullName); PushButtonData midButtonData = new PushButtonData(midButtonName, "Mid", Assembly.GetExecutingAssembly().Location, typeof(MidCommand).FullName); PushButtonData downButtonData = new PushButtonData(downButtonName, "Down", Assembly.GetExecutingAssembly().Location, typeof(DownCommand).FullName); // Add the buttons to the panel panel.AddItem(upButtonData); panel.AddItem(midButtonData); panel.AddItem(downButtonData); // Set the layout of the buttons int nItems = panel.GetItems().Count; panel.SetItemPlacement(nItems - 3, RibbonItemPlacement.Large); panel.SetItemPlacement(nItems - 2, RibbonItemPlacement.Medium); panel.SetItemPlacement(nItems - 1, RibbonItemPlacement.Small); return panel; } } ``` 在上面的代码中,我们使用了Revit API中的RibbonPanel和PushButtonData类来创建一个层叠的RibbonPanel,并添加三个按钮。同时,我们还使用了RibbonItemPlacement枚举来设置按钮的排列位置。 接下来,你需要创建三个命令类(UpCommand、MidCommand和DownCommand),分别继承自IExternalCommand接口,并实现Execute方法实现按钮的具体功能。代码示例如下: ``` [Transaction(TransactionMode.Manual)] public class UpCommand : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // TODO: Add your command code here return Result.Succeeded; } } [Transaction(TransactionMode.Manual)] public class MidCommand : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // TODO: Add your command code here return Result.Succeeded; } } [Transaction(TransactionMode.Manual)] public class DownCommand : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { // TODO: Add your command code here return Result.Succeeded; } } ``` 最后,在你的插件启动代码中,你可以调用上面定义的RibbonExtensions.CreateStackedButtons方法来创建层叠的RibbonPanel,并添加三个按钮。示例代码如下: ``` public Result OnStartup(UIControlledApplication application) { // Get the current ribbon tab RibbonTab tab = application.CreateRibbonTab("MyTab"); // Create a stacked button panel RibbonPanel panel = tab.CreateStackedButtons("MyPanel", "My Panel", "UpButton", "MidButton", "DownButton"); return Result.Succeeded; } ``` 运行你的插件,你将会在Revit的Ribbon菜单中看到一个新的选项卡,其中包含一个层叠的RibbonPanel,并添加了三个按钮。这三个按钮分别排列在上、中、下三个位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值