我想创建一个内部自动属性:
internal bool IP { get; protected internal set; }
Run Code Online (Sandbox Code Playgroud)
我认为可以制作setter protected
或protected internal
- 但我总是得到错误的accessibility修饰符必须比属性更具限制性.不是这样的吗?Private
这里没有帮助我.
编辑:
问题是:如何使用内部getter和受保护的setter实现自动属性?
我想要一些工具,最好是一个插入VS 2008/2010的工具,它将通过我的方法并添加关于它们可能抛出的异常的XML注释.我不希望<summary>
为我生成或其他XML标记,因为我将自己填写,但如果即使在private
/ protected
方法我可以看到可以抛出哪些异常也会很好.否则,我发现自己经历了这些方法并将其悬停在其中的所有方法调用中以查看异常列表,然后更新该方法的<exception
列表以包含这些.也许一个VS宏可以做到这一点?
由此:
private static string getConfigFilePath()
{
return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
}
Run Code Online (Sandbox Code Playgroud)
对此:
/// <exception cref="System.ArgumentException"/>
/// <exception cref="System.ArgumentNullException"/>
/// <exception cref="System.IO.IOException"/>
/// <exception cref="System.IO.DirectoryNotFoundException"/>
/// <exception cref="System.Security.SecurityException"/>
private static string getConfigFilePath()
{
return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
}
Run Code Online (Sandbox Code Playgroud)
更新: 看起来工具必须递归地遍历这些方法,例如,method1调用method2,它调用method3,记录为throw NullReferenceException
,因此method2和method1都被工具记录为throw NullReferenceException
.该工具还需要消除重复,如果方法中的两个调用被记录为抛出DirectoryNotFoundException
,该方法将只列出<exception cref="System.IO.DirectoryNotFoundException"/>
一次.
当我尝试为我的XAML重新加载Designer时,我得到一个"对象引用没有设置为对象的实例"错误UserControl
.Visual Studio突出显示以下行作为问题:
<local:TemplateDetail Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3"
Width="600" TemplateData="{Binding ElementName=cbo_templates,
Path=SelectedItem.Data, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)
TemplateDetail
是另一个UserControl
.当我查看时TemplateDetail
,它的Designer视图加载得很好,所以我认为那里没有问题.ComboBox
我的XAML中有一个命名cbo_templates
包含我的Template
类的实例,它有一个Data
属性(因此SelectedItem.Data
).但是,如果我.Data
从Path
上面的XAML中删除,我仍然得到"对象引用"错误,所以我不认为问题是我正在尝试访问该Path
属性null
.这是我的ComboBox
XAML以防万一:
<ComboBox ItemsSource="{Binding Path=List}" Grid.Row="1" Grid.Column="3"
VerticalAlignment="Center" x:Name="cbo_templates" Width="250"
HorizontalAlignment="Left" DisplayMemberPath="Name"
SelectedValuePath="Name" SelectedIndex="0"/>
Run Code Online (Sandbox Code Playgroud)
获取此错误是一个真正的问题,因为设计视图无法加载,因此如果UserControl
不运行应用程序,我无法看到我的样子.知道什么可能是错的吗?它构建良好,我没有看到构建输出中的任何绑定问题.
编辑: 这是两个UserControl
s 的构造函数代码:
UserControl
带有"对象引用"错误的构造函数:
InitializeComponent();
grd_templateList.DataContext = this; // refers to containing <Grid> in XAML
Run Code Online (Sandbox Code Playgroud)
UserControl
我正在尝试嵌入的构造函数,其Design视图加载正常的构造函数:
InitializeComponent();
grd_templateDetail.DataContext = this; // refers …
Run Code Online (Sandbox Code Playgroud) 我刚刚发现了我应该拥有的c#知识?问题和想知道一样,但对于Ruby.我认为Ruby是我最喜欢的编程语言,除了学习基础知识之外,至少我从众多Ruby on Rails项目和一些Ruby脚本中学到了什么,我试图通过阅读像Gluttonous,O'这样的博客来学习. Reilly Ruby,Ola Bini和Polishing Ruby.我也读过像The Ruby Way这样的书.
但是,在接受有关我的Ruby技能的采访时,我还没有充分准备.我被问过一次是否知道关闭,最初我回答说我没有,但后来我问是否面试官意味着代码块,比如lambda和do
...... end
,他做了.我是如何进行3年Ruby编程并尝试学习语言而不学习闭包=代码块的?
所以,我的问题是Ruby程序员应该具备Ruby语言的知识吗?你有什么期望,作为Ruby职位的采访者,我知道吗?只列出一些主题,我会阅读它们.如果您认为有必要,列出Ruby on Rails,Rake,Rack等特定于Ruby的工具也很好.
我有一个Rails应用程序,允许用户通过填写一个扩展的表单来构建数据库查询.我想知道在Rails中检查表单参数的最佳实践.以前,我有我的results
方法(表单提交的方法)执行以下操作:
if params[:name] && !params[:name].blank?
@name = params[:name]
else
flash[:error] = 'You must give a name'
redirect_to :action => 'index'
return
end
Run Code Online (Sandbox Code Playgroud)
但对于几个表格领域,每个人都看到这个重复,这很令人厌烦.我不能只是将它们全部放在某个循环中以检查每个字段,因为字段设置不同:
params[:name]
params[:image][:font_size]
等等.这也是重复的,因为我flash[:error]
为每个缺失/无效参数设置,并为每个参数重定向到相同的URL.我切换到使用一个before_filter
检查所有必要的表单参数,只有一切都没问题才返回true.然后我的results
方法继续,变量只是被分配为flat-out,不涉及检查:
@name = params[:name]
Run Code Online (Sandbox Code Playgroud)
在我的validate_form
方法中,我有以下代码部分:
if (
params[:analysis_type][:to_s] == 'development' ||
params[:results_to_generate].include?('graph')
)
{:graph_type => :to_s, :graph_width => :to_s,
:theme => :to_s}.each do |key, sub_key|
unless params[key] && params[key][sub_key]
flash[:error] = "Cannot leave '#{Inflector.humanize(key)}' blank"
redirect_to(url)
return false
end
end
end
Run Code Online (Sandbox Code Playgroud)
我只是想知道我是否会以最好的方式解决这个问题,或者在参数验证方面我是否遗漏了一些明显的东西.我担心这仍然不是最有效的技术,因为我有几个块,我分配一个值 …
我有一些数据,我想存储在我的Rails应用程序中,因为我用它来生成表单字段,检查提交的表单以确保其值有效等等.基本上,我希望数据在一个位置,因为我使用它在几个地方.
以前,我initialize
在我的控制器中定义了一个方法,并在该方法中初始化实例变量,例如@graph_types = ['bar', 'line']
.这似乎是一个坏主意,因为实际上所有这些initialize
都被用于(初始化这些值),实例变量可以在以后更改,这是我不想要的.
现在,我在我的控制器中的任何方法之外定义常量,在我的过滤器后面的顶部,然后我冻结它们,例如GraphTypes = ['bar', 'line'].freeze
.
我不想将这些数据存储在配置文件中,因为那时我必须跟踪一个额外的文件,读入文件并解析它等等.我不想将这些数据存储在数据库中,因为那样看起来有点矫枉过正; 我不需要做任何疯狂的LEFT OUTER JOIN类型查询,将可用的图形类型与我的另一个常量相结合Themes = ['Keynote', 'Odeo', '37 Signals', 'Rails Keynote'].freeze
.我不想将数据存储在environment.rb中,因为此数据仅适用于特定的控制器.
考虑到这一切,我是否会采用这种"Ruby方式"?
我可以将数组中的每个值分配给C#中的一行中的变量吗?这是Ruby代码中我想要的一个例子:
irb(main):001:0> str1, str2 = ["hey", "now"]
=> ["hey", "now"]
irb(main):002:0> str1
=> "hey"
irb(main):003:0> str2
=> "now"
Run Code Online (Sandbox Code Playgroud)
我不确定我在C#中是否可能需要什么.
编辑: 对于那些暗示我只是将字符串"嘿"和"现在"分配给变量的人,这不是我想要的.想象一下:
irb(main):004:0> val1, val2 = get_two_values()
=> ["hey", "now"]
irb(main):005:0> val1
=> "hey"
irb(main):006:0> val2
=> "now"
Run Code Online (Sandbox Code Playgroud)
现在,该方法get_two_values
返回字符串"hey"和"now" 的事实是任意的.实际上它可以返回任何两个值,它们甚至不必是字符串.
在sql server 2008中,我有以下查询:
select
c.title as categorytitle,
s.title as subcategorytitle,
i.title as itemtitle
from categories c
join subcategories s on c.categoryid = s.categoryid
left join itemcategories ic on s.subcategoryid = ic.subcategoryid
left join items i on ic.itemid = i.itemid and i.siteid = 132
where (ic.isactive = 1 or ic.isactive is null)
order by c.title, s.title
Run Code Online (Sandbox Code Playgroud)
我试图在他们的子类别中获取项目,但如果类别或子类别中没有项目,我仍然想要返回记录.永远不会返回没有项目的子类别.我究竟做错了什么?
谢谢
编辑
使用第二个左连接和where子句修改查询,但它仍然没有返回空值.:/
编辑2
将siteid移动到项目左连接.当我这样做时,我获得了比预期更多的记录.有些项目具有空的siteid,我只想在具有特定ID时包含它们.
编辑3
表结构:
Categories Table
-------
CategoryID
Title
SubCategories Table
-------
SubCategoryID
CategoryID
Title
ItemCategories Table
-------
ItemCategoryID
ItemID
SubCategoryID …
Run Code Online (Sandbox Code Playgroud) 这对我来说似乎很奇怪 - VB.NET通过其RaiseEvent
关键字隐式处理空检查.它似乎大大增加了围绕事件的样板数量,我看不出它提供了什么好处.
我确信语言设计师有充分的理由这样做..但我很好奇,如果有人知道为什么.
通常在我的Rails控制器测试中,我会before { Website.any_instance.stub(:save).and_return(false) }
测试当记录不保存时会发生什么.它似乎any_instance
与Rspec 3一起消失了.
我尝试使用before { allow(Website).to receive(:save).and_return(false) }
Rspec 3,但现在我收到此错误:
网站(id:整数,...)未实现:save
是否有替代any_instance
Rspec 3 非常有用?