Tag: 属性

如何将表示C#枚举值的字符串国际化?

我已经看到很多关于将字符串映射到枚举的问题和答案,反之亦然,但是如何将一系列本地化字符串映射到枚举? 我应该只创建一个这样的扩展方法 ,从资源文件中返回正确的字符串吗? 有没有办法本地化这样的解决方案中使用的属性(如“描述”)? 哪个是首选解决方案 – 扩展方法或属性。 在我看来,这不是属性的预期目的。 事实上,现在我考虑一下,如果我使用扩展方法,属性似乎是我用来在资源文件中为我想要用来代替枚举值的本地化字符串指定一个键。 编辑 – 示例: 鉴于以下枚举, public enum TransactionTypes { Cheque = 1, BankTransfer = 2, CreditCard = 3 } 我想要一种方法将每种类型映射到本地化的字符串。 我开始使用枚举的扩展方法,该方法使用switch语句和对资源文件的强类型引用。 但是,每个枚举的扩展方法似乎不是一个很好的解决方案。 我已经开始关注此操作 ,为每个枚举值创建一个自定义属性。 该属性具有包含本地化字符串的资源文件的基本名称和密钥。 例如,在上面的枚举中,我有: … [EnumResourceAttribute(“FinancialTransaction”, “Cheque”)] Cheque = 1, … 其中“FinanacialTransaction”是resx文件,“Check”是字符串键。 我正在尝试创建一个实用工具方法,我可以从任何枚举中传递任何值,并让它返回该值的本地化字符串表示forms,假设指定了自定义属性。 我无法弄清楚如何动态访问资源文件及其中的密钥。

在运行时,如何测试属性是否只读?

我自动生成代码,根据配置(textboxes,dateTimePickers等)创建一个winform对话框。 这些对话框上的控件从已保存的数据集中填充 需要为各种控件对象(自定义或其他)设置和获取属性。 //Upon opening of form – populate control properties with saved values MyObject.Value = DataSource.GetValue(“Value”); //Upon closing of form, save values of control properties to dataset. DataSource.SetValue(“Value”) = MyObject.Value; 现在这一切都很好,但readOnly属性是什么? 我希望保存属性的结果,但需要知道何时不生成将尝试填充它的代码。 //Open form, attempt to populate control properties. //Code that will result in ‘cannot be assigned to — it is read only’ MyObject.HasValue […]

Visual Studio设计时间属性 – 表单列表下拉菜单

[编辑]要清楚,我知道如何通过反思获得表格列表。 我更关心设计时属性网格。 我有一个用户控件具有Form类型的公共属性。 我希望能够在设计时从下拉菜单中选择一个表单。 我想从set命名空间填充表单下拉列表:UI.Foo.Forms 如果您拥有Control的公共属性,这将起作用。 在设计时,属性将自动使用表单上的所有控件填充下拉列表,供您选择。 我只想用命名空间中的所有表单填充它。 我该怎么做呢? 我希望我足够清楚,所以没有混乱。 如果可能的话,我正在寻找一些代码示例。 当我有其他截止日期要求时,我试图避免花太多时间在这上面。 感谢您的帮助。

为什么我的.NET属性不执行操作?

我创建了一个简单的属性: [AttributeUsage(AttributeTargets.Method)] public class InitAttribute : System.Attribute { public InitAttribute() { Console.WriteLine(“Works!”); } } 我将它应用于一个简单的方法: static class Logger { public static string _severity; public static void Init(string severity) { _severity = severity; } [Init()] public static void p() { Console.WriteLine(_severity); } } 发生了什么是非常好的前进。 只是,我希望该属性执行一个动作(打印Works!),但这不会发生。 上瘾,打印“作品!” 当然只是为了调试目的:我想访问实例的属性_severity (例如,检查是否是!= null),但我一直在阅读的有关属性的内容(对我来说很新)是关于通过reflection访问类的方法或属性等。 一旦我评估了_severity ,我怎样才能修改修饰方法的行为(在这种情况下,引发exception“Logger未初始化”并且不执行它)? 任何帮助赞赏。

以编程方式生成属性

我想加载一个属性文件(它是一个.csv文件,每行都有一个名称和相关的数值),然后访问这些属性值,如: FileLoader.PropertyOne或FileLoader.PropertyTwo 。 问题是我不想为每个值写一个属性,我希望它们是从文件生成的。 所以 public class FileLoader { public int Property1 { get; private set; } } 不是我想要的。 这可能吗? 我看不到任何办法,因为显然编译器不会知道属性名称。 也许类似的东西?

带参数的Getter属性

我想我以前见过某个地方,但现在我不记得都找不到它,有没有办法用参数制作一个getter属性? 我的意思是,因为我可以转换“float getSize();” 到“浮动大小” float getSize() { return this.size; } float Size { get { return this.size; } } 然后,我可以转换为例如“float getSize(String unit);” “浮动大小(字符串单位)”或类似的东西? float getSize(String unit) { return this.size; } float Size(String unit) { get { if (unit == Unit.Meters) return this.size/100; else return this.size; } } 我认为根本没有使用function的问题,但这样看起来可能更好:P

清洁代码:对象应该具有公共属性吗?

我正在阅读“清洁代码”一书,并且正在努力解决这个问题。 在讨论对象和数据结构时,它指出以下内容: 对象隐藏抽象背后的数据,并公开对该数据进行操作的函数。 数据结构公开其数据并且没有有意义的function。 所以,我从中获得的是我不应该在我的对象上有任何公共属性,我应该只有对属性执行操作的方法。 如果我确实需要访问属性,它们应该在数据结构上,可以从我对象上的方法返回? 使用这种方法,似乎我需要为我的对象上的Height属性使用GetHeight()和SetHeight()方法,而不是仅使用属性的get和set 。 也许我并不完全理解建议的内容,但这是我对“ 对象隐藏数据 ”的理解。 如果你能帮助我理解这一点,我将非常感激! 提前致谢!

我可以让Moq向mock类添加属性吗?

我正在为我的项目编写命令行界面。 用户输入“create project foo”,它找到负责“project”的控制器,然后调用Create方法,将“foo”作为第一个参数传递。 它在很大程度上依赖于属性和reflection:控制器看起来像这样: [ControllerFor(“project”)] class ProjectController { [ControllerAction(“create”)] public object Create(string projectName) { /* … */ } } 我想在解析器的unit testing中使用Moq,如下所示: Mock controller = new Mock(); controller.Expect(f => f.Create(“foo”)); parser.Register(controller.Object); parser.Execute(“create project foo”); controller.VerifyAll(); 将属性添加到接口似乎不起作用 – 它们不是由派生类inheritance的。 我可以让Moq为被模拟的类添加属性吗?

从属性getter或setter方法创建委托

要从方法创建委托,您可以使用compile type-safe语法: private int Method() { … } // and create the delegate to Method… Func d = Method; 属性是getter和setter方法的包装器,我想创建一个属性getter方法的委托。 就像是 public int Prop { get; set; } Func d = Prop; // or… Func d = Prop_get; 不幸的是,这不起作用。 我必须创建一个单独的lambda方法,当getter方法匹配委托签名时,这似乎是不必要的: Func d = () => Prop; 为了直接使用委托方法,我必须使用讨厌的reflection,这不是编译类型安全的: // something like this, not tested… MethodInfo m […]

ASP MVC C#:是否可以将动态值传递给属性?

好吧,我是C#的新手,我正在尝试使用ASP MVC2创建一个小网站。 我想创建自己的授权属性。 但如果可能,我需要传递一些值。 例如: [CustomAuthorize(GroupID = Method Parameter?] public ActionResult DoSomething(int GroupID) { return View(“”); } 我想授权访问页面。 但它取决于传递给控制器​​的值。 因此授权取决于groupID。 这有可能以任何方式实现这一目标吗? 提前致谢。