假设有一个 Employee 类,业务需求之一是 EmployeeName 变得唯一。现在使用 3 层架构,
第 1 层:表示
层 第 2 层:域模型 + 数据服务类(业务逻辑层)
第 3 层:数据访问类 + 存储过程(数据访问层)
既然上面的需求是业务需求,您认为这条规则最好放在哪里?
选项 1:数据库中的唯一键约束
选项 2:检查业务层数据服务类中的条件,以便无论使用哪个数据层,都将业务逻辑封装在该层中?
请考虑以下代码(为简单起见,我没有遵循任何C#编码规则).
public class Professor
{
public string _Name;
public Professor(){}
public Professor(string name)
{
_Name=name;
}
public void Display()
{
Console.WriteLine("Name={0}",_Name);
}
}
public class Example
{
static int Main(string[] args)
{
Professor david = new Professor("David");
Console.WriteLine("\nBefore calling the method ProfessorDetails().. ");
david.Display();
ProfessorDetails(david);
Console.WriteLine("\nAfter calling the method ProfessorDetails()..");
david. Display();
}
static void ProfessorDetails(Professor p)
{
//change in the name here is reflected
p._Name="Flower";
//Why Caller unable to see this assignment
p=new Professor("Jon");
}
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,输出是:
在调用方法之前,教授Details()......
姓名=大卫 …
我有一个T4模板系统 - 在运行时执行,而不是在编译时执行 - 它在我的应用程序中生成许多类的骨架.所有这些模板都驻留在生成器工具中,该工具不时用于将新类预生成到目标应用程序中.该工具包含一个配置类,其属性参数化所有T4模板的输出.
最初配置类是静态类.但是,随着类生成器工具的增长,最好使其成为非静态的,而是为每次使用创建一个新实例.问题是如何将此实例传递给T4模板的实例.自然的方式似乎是从一个公共基础继承它们,这个公共基础将配置配置类实例.
问题是,TextTransformation我的自定义T4基类继承的类位于一个程序集中(根据这个SO问题的来源)不附带Visual Studio 2010.而是在Visual Studio中提供它2010 SDK.
VS2010生成的基类虽然本身没有祖先,但不是部分的,所以没有办法通过另一个部分声明"注入"自定义祖先.
因此问题是:有没有办法从自定义基类继承运行时执行的T4模板而无需安装Visual Studio 2010 SDK?
免责声明:我对T4不是很熟悉,所以对于如何解决这个问题我可能完全错了.因此,欢迎任何其他建筑建议,虽然我的目标不是创建一个超级架构的发电机 - 它只是一个辅助工具,对于偶尔的读者来说应该是简单易懂的.
为了查看原始响应,我使用OnBeforeDeserialization事件,但我想查看原始请求,因为我收到错误,我想知道发送的确切内容.
有没有办法在不使用restsharp源代码并进行调试的情况下执行此操作?
谢谢
编辑1:
管理以捕获fiddler的流量:这是请求的TextView:
assignee=test&milestone=0&state=open&title=test%20issue&body=test%20issue
Run Code Online (Sandbox Code Playgroud)
这是回应:
{"message":"Problems parsing JSON"}
Run Code Online (Sandbox Code Playgroud)
这是我配置我的请求的方式:
var request = new RestRequest();
request.Resource = "repos/" + repo_slug + "/issues";
request.Method = Method.POST;
request.OnBeforeDeserialization = resp => { cnt = resp.Content; };
// Convert Issue:
GitModels.IssuePost toPostIssue = Git2Bit.GitModels.Bit2GitTranslator.translate(bitIssue);
request.AddParameter("assignee", toPostIssue.assignee, ParameterType.GetOrPost);
request.AddParameter("milestone", toPostIssue.milestone, ParameterType.GetOrPost);
request.AddParameter("state", toPostIssue.state, ParameterType.GetOrPost);
request.AddParameter("body", toPostIssue.body, ParameterType.GetOrPost);
Run Code Online (Sandbox Code Playgroud)
获取问题而不是发布作品.:|
当https://graph.microsoft.com/v1.0/me我尝试获取邮件网址时,我会不断收到回复"mail:null".
完整回复如下:
{
"@odata.context": "https://graph.microsoft.com/v1.0/",
"@odata.type": "#microsoft.graph.user",
"@odata.id": "users/XXXXXXXXX",
"businessPhones": ["XXXXXXXX"],
"displayName": "XXXX XXXX",
"givenName": "XXXX",
"jobTitle": null,
"mail": null,
"mobilePhone": "XXXXXXXX",
"officeLocation": null,
"preferredLanguage": "en-US",
"surname": "XXXXXXX",
"userPrincipalName": "XXXXXXX@XXXXX.onmicrosoft.com",
"id": "XXXXX-XXXXX-XXXXX"
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么它不会返回完整的个人资料信息?我使用的是1.0版.
我有以下内容simple.dtd:
<!ENTITY % placeholder "my, element, list">
<!ELEMENT root (%placeholder;)>
<!ELEMENT my (#PCDATA)>
<!ELEMENT element (#PCDATA)>
<!ELEMENT list (#PCDATA)>
Run Code Online (Sandbox Code Playgroud)
和simple.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE root SYSTEM "simple.dtd">
<root>
<my />
<element />
<list />
</root>
Run Code Online (Sandbox Code Playgroud)
这有效并且有效。
但完全相同的 DTD 内联:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE root [
<!ENTITY % placeholder "my, element, list">
<!ELEMENT root (%placeholder;)>
<!ELEMENT my (#PCDATA)>
<!ELEMENT element (#PCDATA)>
<!ELEMENT list (#PCDATA)>
]>
<root>
<my />
<element />
<list />
</root>
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
$ …Run Code Online (Sandbox Code Playgroud) 我正在构建一个表达式树(Expression<Func<PlainAddress, bool>> predicate)以将其传递给IQueryable.WhereHNibernate 的函数来执行查询.当我通过时:
predicate = y => y.Address.City == geoObject.Name;
Run Code Online (Sandbox Code Playgroud)
一切正常.当我通过时:
var x = Expression.Parameter(typeof(PlainAddress));
Expression<Func<PlainAddress, string>> expression = y => y.Address.City;
predicate = Expression.Lambda<Func<PlainAddress, bool>>(
Expression.Equal(
Expression.Invoke(expression, x),
Expression.Constant(geoObject.Name)),
x);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常
Invalid path: 'y.Address.City'
[.Where(NHibernate.Linq.NhQueryable`1[BPPDicsManager.Domain.Entities.PlainAddress],
Quote((60ee8287-3f42-426a-8c15-41f62f58623c, ) => (String.op_Equality((y, ) =>
(y.Address.City)60ee8287-3f42-426a-8c15-41f62f58623c, p1))), )]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这两个选项有什么区别?
如果我有一个如下字符串:
String myString = "SET(someRandomName, \"hi\", u)";
Run Code Online (Sandbox Code Playgroud)
在哪里我知道它"SET("总是存在于字符串中,但是长度"someRandomName"未知,我将如何删除所有字符"("到第一个实例"""?所以要重新迭代,我想删除这个子字符串:"SET(someRandomName, \""from myString.
我怎么在C#.Net中这样做?
编辑:我不想为此使用正则表达式.
我正在保存文件(图像,Excel文档,Word文档,exe文件,bat文件等).我需要从程序内部执行文件,问题是是否有办法让Windows处理如何运行/执行文件?就像在资源管理器中双击文件一样?
我正在尝试解析包含名为ref的参数的json文件.我正在反序列化为类结构:
public class JiveContentObject
{
public int id { get; set;}
public string subject { get; set;}
..etc
}
Run Code Online (Sandbox Code Playgroud)
但是,我不能完全写,public string ref {get; set;}因为ref是c#中的关键字.有什么方法可以解决这个问题吗?